【发布时间】:2016-03-11 13:26:28
【问题描述】:
您好,我想问一下这是否是最快且占用资源最少的方法来获得最接近字典中 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
【问题讨论】:
-
从来没有见过任何其他的原生方式,所以有过的人必须猛扑过去,挽救局面。但是您是否考虑过扩展您的
sorted()逻辑?做一个手册for key, val in dct.items():并在找到完全匹配时打破?或者如果可能的话反转字典?让整数为键,字母为值,如果有可能,您可以获取dct[1]。否则,您始终可以使用from collections import OrderedDict并按数量级保存它们。或者一个简单的预排序列表,您可以在其中执行scores[-1]并获得最高? -
@Torxed 我可以用值交换键,但不能保证我总是得到 1(这就是为什么我想对值进行排序,然后将最接近的值弹出到 1。
标签: python dictionary key sorted