Encontrar o Valor Máximo no Dicionário Python

  1. Utilize o operator.itemgetter() Método para obter chave com valor máximo
  2. Utilize o dict.items() Método para Python 3.x para obter chave com valor máximo no dicionário
  3. uma solução geral e eficiente de memória para obter chave com valor máximo no dicionário
  4. Utilize max() e dict.get() Métodos para obter a chave com o valor máximo no dicionário

Este tutorial descreve como obter uma chave com valor máximo em dicionário Python. Também lista alguns exemplos de códigos para clarificar os conceitos, uma vez que o método mudou em relação a versões anteriores do Python.

Utilize o operator.itemgetter() Método para obter chave com valor máximo

Não precisamos de criar uma nova lista para iterar sobre o par (chave, valor) do dicionário. Podemos utilizar stats.iteritems() para este fim. Retorna um iterador sobre o par (chave, valor) do dicionário.

Pode utilizar o método operator.itemgetter(x) para obter o objecto chamável que irá retornar o elemento x-th do objecto. Aqui porque o objecto é o (chave, valor) par, operator.itemgetter(1) refere-se ao elemento no índice de 1, ou seja, o valor.

Como queremos uma chave com um valor máximo, vamos encapsular os métodos na função max.

Um código de exemplo básico para este método é dado abaixo:

import operator

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

Resultado:

key3

Nota: Mesmo que haja outra chave com um valor 44, este método irá devolver um dos dois valores igualmente máximos.

Além disso, por favor note que iteritems() pode levantar uma RunTimeException enquanto adiciona ou remove itens do dicionário, e dict.iteritems é removido em Python 3.

Utilize o dict.items() Método para Python 3.x para obter chave com valor máximo no dicionário

Em Python 3.x, pode utilizar o método dict.items() para iterar sobre pares de valor chave do dicionário. É o mesmo método que o dict.iteritems() em Python 2.

Um código de exemplo para este método é dado abaixo:

import operator

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

Resultado:

key3

uma solução geral e eficiente de memória para obter chave com valor máximo no dicionário

Curiosamente, existe outra solução que funciona tanto para Python 2 como para Python 3. A solução utiliza a função lambda para obter a chave, e o método max para assegurar que a chave obtida é a máxima.

O código base para esta abordagem é dado abaixo:

import operator

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

Resultado:

key3

Utilize max() e dict.get() Métodos para obter a chave com o valor máximo no dicionário

Outra solução para este problema pode ser simplesmente utilizando o método max() incorporado. É fornecido com os stats para obter o valor máximo, e para devolver a key com o valor máximo, é utilizado o método dict.get().

Um código de exemplo é dado abaixo:

import operator

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

Resultado:

key3

Artigo relacionado - Python Dictionary

  • Pretty Imprimir um Dicionário Bonito em Python
  • Esvaziar um dicionário em Python