python dict,找到最接近x的值

时间:2013-08-12 21:59:19

标签: python python-3.x

说我有这样的字典:

d = {'a': 8.25, 'c': 2.87, 'b': 1.28, 'e': 12.49}

我有一个值

v = 3.19

我想说的是:

x = "the key with the value CLOSEST to v"

哪会导致

x = 'c'

有关如何处理此问题的任何提示?

4 个答案:

答案 0 :(得分:8)

使用min(iter, key=...)

target = 3.19
key, value = min(dict.items(), key=lambda (_, v): abs(v - target))

答案 1 :(得分:2)

你可以这样做:

diff = float('inf')
for key,value in d.items():
    if diff > abs(v-value):
        diff = abs(v-value)
        x = key

print x

,提供'c'

您也可以使用min来完成这项工作:

x = min(((key, abs(value-v)) for key,value in d.items()), key = lambda(k, v): v)[0]

答案 2 :(得分:1)

如果两个值与目标距离相同,不确定您希望它做什么,但如果这是一个问题,您可以使用类似的东西

min_diff = min(abs(v - target) for v in d.values())
closest_keys = [k for k, v in d.items() if abs(v - target) == min_diff]

答案 3 :(得分:0)

您可以执行以下操作:

d = {'a': 8.25, 'c': 2.87, 'b': 1.28, 'e': 12.49}
v,l = 3.19,float('inf')
for name,value in d.items():
    if abs(value-3.19) < l:
        l = value-3.19
        n = name
print n