Jeg er litt forvirret av følgende kode:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Det jeg ikke forstår er nøkkel
-delen. Hvordan gjenkjenner Python at den bare trenger å lese nøkkelen fra ordboken? Er nøkkel
et spesielt ord i Python? Eller er det bare en variabel?
nøkkel` er bare et variabelnavn.
for key in d:
vil bare løkke over nøklene i ordboken, i stedet for nøklene og verdiene. For å løkke over både nøkkel og verdi kan du bruke følgende:
For Python 2.x:
for key, value in d.iteritems():
For Python 3.x:
for key, value in d.items():
For å teste selv, endre ordet key
til poop
.
For Python 3.x, iteritems()
har blitt erstattet med bare items()
, som returnerer en sett-lignende visning støttet av dict, som iteritems()
, men enda bedre.
Dette er også tilgjengelig i 2.7 som viewitems()
.
Operasjonen items()
vil fungere for både 2 og 3, men i 2 vil den returnere en liste over ordbokens (nøkkel, verdi)
-par, som ikke vil gjenspeile endringer i dict som skjer etter items()
-kallet. Hvis du vil ha 2.x-oppførselen i 3.x, kan du kalle list(d.items())
.
Når du itererer gjennom ordbøker ved hjelp av for .. i ..
-syntaksen, itereres det alltid over nøklene (verdiene er tilgjengelige ved hjelp av ordbok[nøkkel]
).
For å iterere over nøkkel-verdi-par bruker du i Python 2 for k,v in s.iteritems()
, og i Python 3 for k,v in s.items()
.
Dette er et svært vanlig sløyfeuttrykk. in
er en operator. For når du skal bruke for key in dict
og når det må være for key in dict.keys()
se David Goodgers Idiomatic Python-artikkel (arkivert kopi).