Obtener la clave correspondiente al valor mínimo dentro de un diccionario
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
.
Aceptado
Lo mejor: min(d, key=d.get)
¡no hay razón para interponer una lambda
capa de dirección indirecta inútil o extraer elementos o claves!
>>> d = {320: 1, 321: 0, 322: 3}
>>> min(d, key=d.get)
321
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.
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))