最大值我有這樣一本字典:5 Python字典
A = {'a':10, 'b':843, 'c': 39,.....}
我想這個字典的5個最大值和存儲新的字典與此有關。爲了獲得最大的價值,我做了:
max(A.iteritems(), key=operator.itemgetter(1))[0:]
也許這是一個容易的任務,但我堅持了很長一段時間。請幫忙!!!
最大值我有這樣一本字典:5 Python字典
A = {'a':10, 'b':843, 'c': 39,.....}
我想這個字典的5個最大值和存儲新的字典與此有關。爲了獲得最大的價值,我做了:
max(A.iteritems(), key=operator.itemgetter(1))[0:]
也許這是一個容易的任務,但我堅持了很長一段時間。請幫忙!!!
你就近了。您可以排序使用sorted
[docs]並採取先五行名單:
newA = dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
試試這個:
dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
謝謝!!!! ...它真的幫助我! :) – Alejandro
無需使用iteritems和itemgetter。字典自己的get方法工作正常。
max(A, key=A.get)
同樣的排序:
sorted(A, key=A.get, reverse=True)[:5]
最後,如果字典大小沒有限制,使用堆最終會比完全排序更快。
import heapq
heapq.nlargest(5, A, key=A.get)
欲瞭解更多信息,請看heapq
documentation。
對'heapq' +1,我不知道這一個。 –
我懷疑它會工作,如果7個值是相同的,它仍然會返回5個值 –
謝謝,這是很好的。它似乎選擇了一個不適用於python3.4 – user1953366
你可以在這裏使用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}
這是返回值以及鍵的唯一答案,**謝謝** –
謝謝!!!! ......它真的幫助我! :) – Alejandro
對於大型字典而言,這可能效率低下,但更有效的解決方案將變得更加複雜。 (例如,你可以實現一個部分Quicksort,當高級分區有5個或更多的元素時,不需要對這兩個分區進行排序)。「排序」技術很可能足以滿足OP的目的。 –
@凱蒂:是的,你是對的。 –