在python中,字典中键的搜索已经被讨论过很多次了。但是有时候,我们可能会遇到一个问题,我们需要获取给定键中最近的键。让我们讨论一下执行这项任务的某些方法。
方法一:使用列表推导(list comprehension)+keys()+lambda
上述函数的组合可用于执行在字典中查找最近键的特定任务。键函数可用于从字典中访问键,lambda函数可用于表示逻辑和列表理解,从而将所有这些应用于整个列表。
# Python3代码
# 寻找字典中最近的键
# 使用列表推导(list comprehension) + keys() + lambda
# 初始化字典
test_dict = {13 : 'Hi', 15 : 'Hello', 16 : 'Gfg'}
# 初始化最近的键
search_key = 15.6
# 打印原始字典
print("原始字典是 : " + str(test_dict))
# 使用列表推导(list comprehension) + keys() + lambda
# 寻找字典中最近的键
res = test_dict.get(search_key) or test_dict[
min(test_dict.keys(), key = lambda key: abs(key-search_key))]
# 打印结果
print("最近的键为 : " + str(res))
方法二:使用bisect_left() + OrderedDict()
该方法一般采用二叉搜索法求最接近的数。虽然速度很快,但是它改变了顺序,并且还返回了最近值的两个潜在候选值,当前值和下一个键s值。返回key的位置。
# Python3代码
# 寻找字典中最近的键
# 使用 bisect_left() + OrderedDict()
import collections
import bisect
# 初始化字典
test_dict = collections.OrderedDict()
test_dict = {13 : 'Hi', 15 : 'Hello', 16 : 'Gfg'}
# 初始化最近的键
search_key = 15.6
# 打印原始字典
print("原始字典为: " + str(test_dict))
# 使用 bisect_left() + OrderedDict()
# 字典中最近的键
res = bisect.bisect_left(list(test_dict.keys()), 15.6)
# 打印结果
print("最近键的位置为: " + str(res))
评论前必须登录!
注册