在python字典中有5个最大值

我有这样一本字典:

A = {'a':10, 'b':843, 'c': 39,.....} 

我想获得这个字典的5个最大值,并存储一个新的字典与此。 为了获得最大的价值,我做了:

 max(A.iteritems(), key=operator.itemgetter(1))[0:] 

也许这是一件容易的事,但是我长期坚持下去。 请帮忙!!!

你近了。 您可以使用sorted [文档]对列表进行sorted ,并将前五个元素:

 newA = dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5]) 

另请参阅: Pythonsorting方法

不需要使用iteritems和itemgetter。 字典自己的get方法工作正常。

 max(A, key=A.get) 

类似的sorting:

 sorted(A, key=A.get, reverse=True)[:5] 

最后,如果字典大小是无限的,那么使用堆将最终比完整sorting更快。

 import heapq heapq.nlargest(5, A, key=A.get) 

有关更多信息,请查看heapq文档 。

你可以使用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} 

尝试这个:

 dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])