# 5 maximum values in a python dictionary

I have a dictionary like this:

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

I want to get the 5 maximum values of this dict and store a new dict with this. To get the maximum value I did:

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

Perhaps it is an easy task, but I am stuck on it for a long time. Please help!!!

## Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

### 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])
``````

### 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])
``````

### Solution 5

Try this:

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

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0