Obtener la clave correspondiente al valor mínimo dentro de un diccionario

Resuelto tjvr asked hace 14 años • 17 respuestas

Si tengo un diccionario de Python, ¿cómo obtengo la clave de la entrada que contiene el valor mínimo?

Estaba pensando en algo que ver con elmin() función...

Dada la entrada:

{320:1, 321:0, 322:3}

Volvería 321.

tjvr avatar Jul 19 '10 23:07 tjvr
Aceptado

Lo mejor: min(d, key=d.get)¡no hay razón para interponer una lambdacapa de dirección indirecta inútil o extraer elementos o claves!

>>> d = {320: 1, 321: 0, 322: 3}
>>> min(d, key=d.get)
321
Intrastellar Explorer avatar Jul 19 '2010 16:07 Intrastellar Explorer

Esto devuelve la tupla del par clave-valor después de comparar valores:

>>> d = {320:1, 321:0, 322:3}
>>> d.items()
dict_items([(320, 1), (321, 0), (322, 3)])  # Python 2.7 [(320, 1), (321, 0), (322, 3)]
>>> # find the minimum by comparing the second element of each tuple
>>> min(d.items(), key=lambda x: x[1]) 
(321, 0)

Para Python 2.7, utilícelo d.iteritems()para diccionarios más grandes, ya que evita la copia. Python 3 dict.items()ya esitemview así que no es necesario realizar cambios.

Mark Rushakoff avatar Jul 19 '2010 16:07 Mark Rushakoff

Para varias claves que tienen el mismo valor más bajo, puede utilizar una lista por comprensión:

d = {320:1, 321:0, 322:3, 323:0}

minval = min(d.values())
res = [k for k, v in d.items() if v==minval]

[321, 323]

Una versión funcional equivalente:

res = list(filter(lambda x: d[x]==minval, d))
 avatar Apr 27 '2018 00:04