个性化阅读
专注于IT技术分析

Python如何在字典(Dictionary)中找最近的键?——已解决

在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)) 
赞(0) 打赏
未经允许不得转载:srcmini » Python如何在字典(Dictionary)中找最近的键?——已解决
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏