Python 字典中的5个最大值

我有一本这样的字典:

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

我想得到的5个最大值的这个结构和存储一个新的结构与此。为了得到我所做的最大值:

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

也许这是一个简单的任务,但是我困在这上面很长一段时间了。请帮帮我! ! !

120764 次浏览

你很接近了。你可以使用 sorted < em > < sup > [ docs ] 获取列表中的前五个元素:

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

参见: Python 如何排序

试试这个:

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

不需要使用 iteritem 和 itemgetter。

max(A, key=A.get)

排序也是如此:

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

最后,如果 dictsize 是无界的,那么使用堆最终会比完整排序更快。

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

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

你可以在这里使用 收款柜台:

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}

对于 Python 3

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