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字典中查找最接近的值并返回其键所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)