gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:20 24 4
gpt4 key购买 nike

我有一个值(value)

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) 并且我只想要 key (作为 int)。此外,我无法理解该代码的确切作用。

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

最佳答案

您可以使用序列解包来解包您的tuple 结果:

value = 0.04532
d = {'1': 0.02827, '2': 0.0, '3': 0.09827, '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,而不是 dict。同样,不要将 lambda 的参数命名为与您已经定义的变量相同的名称。

否则,min 的逻辑如下:

  1. d.items 中提取每个元组,即键值对。
  2. 将函数 lambda x: abs(value - x[1]) 应用于每个元组,即计算与 value 的绝对差值。
  3. 计算 lambda 函数的最小结果并返回提供的参数,在本例中是来自 d 的单个 tuple。项目

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

关于python - 在 Python 字典中查找最接近的值并返回其键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com