5 maximum values in a python dictionary
Solution 1:
No need to use iteritems and itemgetter. The dict's own get method works fine.
max(A, key=A.get)
Similarly for sorting:
sorted(A, key=A.get, reverse=True)[:5]
Finally, if the dict size is unbounded, using a heap will eventually be faster than a full sort.
import heapq
heapq.nlargest(5, A, key=A.get)
For more information, have a look at the heapq
documentation.
Solution 2:
You are close. You can sort the list using sorted
[docs] and take the first five elements:
newA = dict(sorted(A.iteritems(), key=operator.itemgetter(1), reverse=True)[:5])
See also: Python Sorting HowTo
Solution 3:
You could use collections.Counter here:
dict(Counter(A).most_common(5))
Example:
>>> 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}
Solution 4:
For Python 3
import operator
dict(sorted(A.items(), key=operator.itemgetter(1), reverse=True)[:5])