说我有这样的字典:
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'
有关如何处理此问题的任何提示?
答案 0 :(得分:8)
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