我有这样的字典:
A = {'a':10, 'b':843, 'c': 39,.....}
我想得到这个dict的5个最大值,并用这个存储一个新的dict。为了获得我做的最大值:
max(A.iteritems(), key=operator.itemgetter(1))[0:]
也许这是一项轻松的任务,但我长期坚持下去。请帮忙!!!
答案 0 :(得分:90)
无需使用iteritems和itemgetter。 dict自己的get方法运行正常。
max(A, key=A.get)
类似于排序:
sorted(A, key=A.get, reverse=True)[:5]
最后,如果dict大小无限制,那么使用堆最终会比完全排序更快。
import heapq
heapq.nlargest(5, A, key=A.get)
有关详细信息,请查看heapq
documentation。
答案 1 :(得分:52)
你很亲密。您可以使用sorted
[docs] 排序列表并获取前五个元素:
newA = dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
另请参阅:Python Sorting HowTo
答案 2 :(得分:34)
您可以在此处使用collections.Counter:
dict(Counter(A).most_common(5))
示例:
>>> from collections import Counter
>>> A = {'a' : 1, 'b' : 3, 'c' : 2, 'd' : 4, 'e' : 0, 'f' :5}
>>> dict(Counter(A).most_common(5))
{'a': 1, 'c': 2, 'b': 3, 'd': 4, 'f': 5}
答案 3 :(得分:3)
试试这个:
dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
答案 4 :(得分:0)
对于Python 3
import operator
dict(sorted(A.items(), key=operator.itemgetter(1), reverse=True)[:5])