Altro
Iterare sui dizionari usando i cicli for
Sono un po' perplesso dal seguente codice:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Quello che non capisco è la parte "chiave". Come fa Python a riconoscere che ha bisogno solo di leggere la chiave dal dizionario? La chiave
è una parola speciale in Python? O è semplicemente una variabile?
2875
3
key
è solo un nome di variabile.farà semplicemente un loop sulle chiavi del dizionario, piuttosto che sulle chiavi e sui valori. Per fare un loop su entrambe le chiavi e i valori puoi usare il seguente:
Per Python 2.x:
Per Python 3.x:
Per testare voi stessi, cambiate la parola
key
conpoop
.Per Python 3.x,
iteritems()
è stato sostituito con semplicementeitems()
, che restituisce una vista simile ad un set supportato da un dict, comeiteritems()
ma anche meglio. Questo è disponibile anche in 2.7 comeviewitems()
.L'operazione
items()
funzionerà sia per la 2 che per la 3, ma nella 2 restituirà una lista di coppie(key, value)
del dizionario, che non rifletterà i cambiamenti al dict che avvengono dopo la chiamataitems()
. Se volete il comportamento 2.x in 3.x, potete chiamarelist(d.items())
.Quando si itera attraverso i dizionari usando la sintassi
for .. in ..
, si itera sempre sulle chiavi (i valori sono accessibili usandodictionary[key]
).Per iterare su coppie chiave-valore, in Python 2 usate
for k,v in s.iteritems()
, e in Python 3for k,v in s.items()
.Questo è un idioma di looping molto comune.
in
è un operatore. Per quando usarefor key in dict
e quando deve esserefor key in dict.keys()
si veda David Goodger'articolo Idiomatic Python (copia archiviata).