web-dev-qa-db-fra.com

Obtenir la clé dict par valeur maximale

J'essaie d'obtenir la clé dict dont la valeur est le maximum de toutes les valeurs du dict.

J'ai trouvé deux façons, pas assez élégantes.

d= {'a':2,'b':5,'c':3}
# 1st way
print [k for k in d.keys() if d[k] == max(d.values())][0]
# 2nd way
print Counter(d).most_common(1)[0][0]

Est-ce qu'il y a une meilleure approche?

23
mclafee

Utilisez le paramètre key pour max():

max(d, key=d.get)

Démo:

>>> d= {'a':2,'b':5,'c':3}
>>> max(d, key=d.get)
'b'

Le paramètre key prend une fonction, et pour chaque entrée de l'itérable, il trouvera celle pour laquelle la fonction key renvoie la valeur la plus élevée.

73
Martijn Pieters