How to Find Maximum Value in Python Dictionary

  1. Use the operator.itemgetter() Method to Get Key With Maximum Value
  2. Use the dict.items() Method for Python 3.x to Get Key With Maximum Value in Dictionary
  3. a General and Memory Efficient Solution to Get Key With Maximum Value in Dictionary
  4. Use max() and dict.get() Methods to Obtain Key With Maximum Value in Dictionary

This tutorial describes how to get a key with maximum value in Python. It also lists some example codes to clarify the concepts as the method has changed from previous Python versions.

Use the operator.itemgetter() Method to Get Key With Maximum Value

We don’t need to create a new list to iterate over the dictionary’s (key, value) pair. We can use stats.iteritems() for this purpose. It returns an iterator over the (key, value) pair of the dictionary.

You can use the operator.itemgetter(x) method to get the callable object that will return the x-th element from the object. Here because the object is the (key, value) pair, operator.itemgetter(1) refers to the element at the index of 1, that is, the value.

As we want a key with a maximum value, so we will encapsulate the methods in the max function.

A basic example code for this method is given below:

import operator

stats = {'key1':20, 'key2':35, 'key3': 44}
max_key = max(stats.iteritems(), key=operator.itemgetter(1))[0]
print(max_key)

Output:

key3

Note: Even if there is another key with a 44 value, this method will return one of the two equally maximum values.

Also, please note that iteritems() can raise a RunTimeException while adding or removing items from the dictionary, and dict.iteritems is removed in Python 3.

Use the dict.items() Method for Python 3.x to Get Key With Maximum Value in Dictionary

In Python 3.x, you can use the dict.items() method to iterate over key-value pairs of the dictionary. It is the same method as dict.iteritems() in Python 2.

An example code for this method is given below:

import operator

stats = {'key1':20, 'key2':35, 'key3': 44}
max_key = max(stats.items(), key=operator.itemgetter(1))[0]
print(max_key)

Output:

key3

a General and Memory Efficient Solution to Get Key With Maximum Value in Dictionary

Interestingly, there is another solution that works for both Python 2 and Python 3. The solution uses the lambda function to obtain the key, and the max method to ensure the obtained key is maximum.

The basis code for this approach is given below:

import operator

stats = {'key1':20, 'key2':35, 'key3': 44}
max_key = max(stats, key=lambda key: stats[key])
print(max_key)

Output:

key3

Use max() and dict.get() Methods to Obtain Key With Maximum Value in Dictionary

Another solution to this problem can be simply using the built-in max() method. It is provided with the stats to obtain maximum value from, and to return the key with maximum value, the dict.get() method is used.

An example code is given below:

import operator

stats = {'key1':20, 'key2':35, 'key3': 44}
max_key = max(stats, key = stats.get)
print(max_key)

Output:

key3