2013-02-20 3 views
2

je suis en train de lire la question où la sortie désirée était d'obtenir l'élément avec la valeur minimumcomment le python min fonction fonctionne

si

d= {'a':2,'b':3,'f':5} 

La réponse est

La réponse donné est min(d, key=d.get)

peut-on expliquer comment cela fonctionne

+3

Trouver la '' key' de d' où la fonction 'd.get (touche)' (équivalent à 'd [clé]') renvoie la valeur comparable la plus basse. – eumiro

+0

@eumiro, la fonction min fonctionne également si 'min (d.values ​​())' je ne reçois pas à quoi sert le second arument. je veux dire comment est le second argument lié au premier argument – user192082107

+1

[La documentation est très bonne.] (http://docs.python.org/library/functions.html#min) "L'argument facultatif * key * spécifie un fonction d'ordonnancement d'arguments comme celle utilisée pour 'list.sort()'. " –

Répondre

2

La fonction min renvoie la valeur minimale d'un itérable en fonction de la clé donnée. Dans ce cas, il renvoie la clé de d avec la valeur minimale. d.get vous permet d'accéder à la valeur correspondante à la clé du dictionnaire, qui est répétée lorsque vous effectuez une itération sur d.

Par exemple:

>>> min([3, 5, 2, 1, 5]) 
1 
>>> d = {'a': 1, 'b': 2, 'c': 3} 
>>> for i in d: 
...  print i 
b 
c 
a 
>>> d.get('b') 
2 
>>> d.get('d') # Nothing is returned 
>>> min(d, key=d.get) 
'a' 

L'argument key à la min spécifie que la clé que vous voulez trouver le minimum sur.

Par exemple:

>>> min(['243', '172344', '6']) 
172344 
>>> min(['243', '172344', '6'], key=len) 
6 

La fonction min fait quelque chose comme ceci:

>>> min(['243', '172344', '6'], key=len) 
# sort the list with key (call `len` on every element and sort based on that) 
# sorted(['243', '172344', '6'], key=len) 
# return the first element (lowest value) 
# sorted(['243', '172344', '6'], key=len)[0] 
6 
+0

Comment 'i in d' a-t-il fonctionné? n'est pas le d est dictionnaire, je pensais que nous devons utiliser d.iteritems() pour cela – user192082107

+1

@ user2082226 itérer sur un dictionnaire itère sur ses touches - c'est directement équivalent à 'for i in d.keys()' – Volatility

+0

can ' t le min (d) travail ?? – user192082107