在Python字典中查找最接近的值并返回其键

在Python字典中查找最接近的值并返回其键,第1张

概述我有一个价值 value = 0.04532 还有一个类似的字典 {'1': 0.02827, '2': 0.0, '3': 0.09827, '4': 0.04533} 我想简单地返回字典中最接近原始值的值的键,在这种情况下为4 我找到了一个类似这样的老帖子 newValue = valueanswer = min(dict.items(), key=lambda (_, value): ab 我有一个价值

value = 0.04532

还有一个类似的字典

{'1': 0.02827,'2': 0.0,'3': 0.09827,'4': 0.04533}

我想简单地返回字典中最接近原始值的值的键,在这种情况下为4

我找到了一个类似这样的老帖子

newValue = valueanswer = min(dict.items(),key=lambda (_,value): abs(value - newValue))

这将返回元组(‘4’,0.04533),我只想要键(作为int).
此外,我无法理解代码正在做什么.

有没有更简洁的方法来完成这项工作?

解决方法 您可以使用序列解包来解压缩元组结果:

value = 0.04532d = {'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中提取每个元组,即键值对.
>将函数lambda x:abs(value – x [1])应用于每个元组,即计算绝对差值与值.
>计算lambda函数的最小结果并返回提供的参数,在本例中为d.items中的单个元组.

注意PEP 3113从Python 3.x中删除了元组参数解包,这就是我们必须在lambda中通过x [1]显式提取第一个值的原因.

总结

以上是内存溢出为你收集整理的在Python字典中查找最接近的值并返回其键全部内容,希望文章能够帮你解决在Python字典中查找最接近的值并返回其键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存