¿Obtener clave con valor máximo en el diccionario?
Tengo un diccionario donde las claves son cadenas y los valores son números enteros.
stats = {'a': 1, 'b': 3000, 'c': 0}
¿Cómo obtengo la clave con el valor máximo? En este caso lo es 'b'
.
¿Existe un enfoque mejor que usar una lista intermedia con tuplas clave-valor invertidas?
inverse = [(value, key) for key, value in stats.items()]
print(max(inverse)[1])
Aceptado
max(stats, key=stats.get)
Puedes usar operator.itemgetter
para eso:
import operator
stats = {'a': 1000, 'b': 3000, 'c': 100}
max(stats.iteritems(), key=operator.itemgetter(1))[0]
Y en lugar de crear una nueva lista en la memoria, utilice stats.iteritems()
. El key
parámetro de la max()
función es una función que calcula una clave que se utiliza para determinar cómo clasificar los elementos.
Tenga en cuenta que si tuviera otro par clave-valor 'd': 3000, este método solo devolverá uno de los dos aunque ambos tengan el valor máximo.
>>> import operator
>>> stats = {'a': 1000, 'b': 3000, 'c': 100, 'd': 3000}
>>> max(stats.iteritems(), key=operator.itemgetter(1))[0]
'b'
Si usa Python3:
>>> max(stats.items(), key=operator.itemgetter(1))[0]
'b'