最快的方法来获得最接近1在Python中的字典键
问题描述:
您好我想问这是否最快,并采取最少的资源方式来获得最接近1字典中的值或有更好,更有效的方式这个。最快的方法来获得最接近1在Python中的字典键
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
答
这应该这样做
min(list(dct.values()), key=lambda x: abs(x - 1))
注:
此方法适用于列表作为井
这不是最有效的 方式。更快的方法是使用
bisect
答
这是我会怎么做:
closest = sorted(dct.values(), key=lambda x: abs(1-x))[0]
我,让数量和1
之间的距离的关键项目进行排序。 (abs(1-x1)
)。因此,第一项是最接近1
的值。你可以使用min()
作为GáborErdős的答案,但是如果你想知道整个订单,请使用这个。
从来没有见过任何其他的方式来做到这一点本地,所以有谁必须趁势扑救。但是你有没有考虑扩展你的'sorted()'逻辑?在dct.items()中做一个手工'for key,val:',并且在你找到完全匹配的时候破坏它?或者如果可能的话反转字典?让整数为关键字,字母为值,如果可能的话,你可以获取'dct [1]'。否则,您总是可以使用'from OrderedDict集合中'并将它们保存在数量级中。或者是一个简单的预先排序的列表,你可以做'分数[-1]'并获得最高分数? – Torxed
@Torxed我可以用键交换值,但不能保证我总是会得到1(这就是为什么我想排序值,然后弹出最接近1的值。 – Gunnm