您好我想问这是否是最快的,并采用最少的资源方式在字典中获得最接近1的值,或者是否有更好,更有效的方法。
import operator
dct = {"a": 0.1, "b": 0.2, "c": 0.7, "d": 1, "e": 0.5}
sorted_orders = sorted(dct.items(), key=operator.itemgetter(1))
sorted_orders = str(sorted_orders.pop()[:1])
a = len(sorted_orders) - 3
sorted_orders = sorted_orders[2:a]
print sorted_orders
所需输出是最接近1的键的内容: d
答案 0 :(得分:1)
我就是这样做的:
closest = sorted(dct.values(), key=lambda x: abs(1-x))[0]
我使用一个键对项目进行排序,该键给出了数字与1
之间的距离。 (abs(1-x1)
)。因此,第一项是最接近1
的值。你可以在GáborErdős的回答中使用min()
,但是如果你想知道整个订单,请使用它。
答案 1 :(得分:0)
这应该这样做
min(list(dct.values()), key=lambda x: abs(x - 1))
注意:
此方法也适用于列表
这不是最有效的
办法。更快的方法是使用bisect