2011-03-08 20 views

risposta

23

Il dizionario "a" è una struttura iterabile in python. Quando esegui il ciclo con for x in a, esegui il looping dei tasti nel dizionario.

Nella seconda riga, la funzione massima richiede due argomenti: un oggetto iterabile (a) e una funzione "chiave" facoltativa. La funzione Key verrà utilizzata per valutare il valore degli articoli in un - il più grande dei quali verrà restituito.

Esempi:

>>> a = dict(((1,3),(0,-1),(3,21))) 
>>> for x in a: 
...  print x #output the value of each item in our iteration 
... 
0 
1 
3 

notare che solo le "chiavi" sono uscita. Quando passiamo ognuno di questi tasti per "ottenere" ...

>>> a.get(0) 
-1 
>>> a.get(1) 
3 
>>> a.get(3) 
21 

Otteniamo il valore per ogni chiave. Ora vedi come funziona max.

>>> b=[2, 3, 5, 6, 4] 
>>> max(b) 
6 
>>> def inverse(x): 
...  return 1.0/x 
... 
>>> max(b, key=inverse) 
2 

Come si può vedere, max (di default) troverà il numero più grande nella nostra lista iterabile. Se definiamo la funzione "inversa", restituirà l'elemento più grande in b per cui inverse(item) è il più grande.

combinare questi due elementi e vediamo che max(a, key=a.get) sta per restituire la item in a per cui il valore di a.get(item) è il più grande. cioè la chiave corrispondente al valore più grande.

+0

Se sei veramente interessato, puoi provare a utilizzare una funzione lambda: 'max (a, key = lambda x: a [x])' – ProdigySim

1

Stai chiedendo come funziona il parametro key? Prende un callable, che viene applicato a ogni elemento nel dizionario. Nel caso del vostro dizionario, lo fa semplicemente questo:

a.get(1) # 3 
a.get(0) # -1 
a.get(3) # 21 

max quindi utilizza il risultato della funzione chiave come il valore di confronto, in modo che, ovviamente, scegliere l'elemento che restituisce il valore più alto, vale a dire 3.

Problemi correlati