在Python字典中查找最接近的值并返回其键
发布时间:2020-12-20 11:07:44 所属栏目:Python 来源:网络整理
导读:我有一个价值 value = 0.04532 还有一个类似的字典 {'1': 0.02827,'2': 0.0,'3': 0.09827,'4': 0.04533} 我想简单地返回字典中最接近原始值的值的键,在这种情况下为4 我找到了一个类似这样的老帖子 newValue = valueanswer = min(dict.items(),key=lambda (_
我有一个价值
value = 0.04532 还有一个类似的字典 {'1': 0.02827,'2': 0.0,'3': 0.09827,'4': 0.04533} 我想简单地返回字典中最接近原始值的值的键,在这种情况下为4 我找到了一个类似这样的老帖子 newValue = value answer = min(dict.items(),key=lambda (_,value): abs(value - newValue)) 这将返回元组(‘4’,0.04533),我只想要键(作为int). 有没有更简洁的方法来完成这项工作? 解决方法
您可以使用序列解包来解压缩元组结果:
value = 0.04532 d = {'1': 0.02827,'4': 0.04533} res_key,res_val = min(d.items(),key=lambda x: abs(value - x[1])) print(res_key,res_val,sep=',') 4,0.04533 问题的一半似乎出现在您选择的变量中.确保不影响类名,例如叫你的字典d,而不是字典.同样,不要将lambda的参数命名为与已定义的变量相同的参数. 否则,逻辑via min的工作原理如下: >从d.items中提取每个元组,即键值对. 注意PEP 3113从Python 3.x中删除了元组参数解包,这就是我们必须在lambda中通过x [1]显式提取第一个值的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |