Naslednja koda me nekoliko zmede:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Ne razumem dela key
. Kako Python prepozna, da mora iz slovarja prebrati samo ključ? Ali je ključ
v Pythonu posebna beseda? Ali je to preprosto spremenljivka?
key
je samo ime spremenljivke.
for key in d:
bo preprosto naredil zanko za ključe v slovarju in ne za ključe in vrednosti. Če želite narediti zanko tako za ključ kot za vrednost, lahko uporabite naslednje:
Za Python 2.x:
for key, value in d.iteritems():
Za Python 3.x:
for key, value in d.items():
Če želite preizkusiti, spremenite besedo key
v poop
.
V Pythonu 3.x je iteritems()
nadomeščeno s preprosto items()
, ki vrne pogled, podoben množici, podprt z dict, podobno kot iteritems()
, vendar še bolje.
To je na voljo tudi v različici 2.7 kot viewitems()
.
Operacija items()
bo delovala tako za 2 kot za 3, vendar bo v 2 vrnila seznam parov slovarja (key, value)
, ki ne bo odražal sprememb v dict, ki se zgodijo po klicu items()
. Če želite obnašanje iz različice 2.x v različici 3.x, lahko pokličete list(d.items())
.
Pri iteraciji po slovarjih z uporabo sintakse za .. in ..
se vedno iterira po ključih (vrednosti so dostopne z uporabo slovar[ključ]
).
Če želite iterirati po parih ključ-vrednost, v Pythonu 2 uporabite for k,v in s.iteritems()
, v Pythonu 3 pa for k,v in s.items()
.
To je zelo pogost idiom uporabe zanke. in
je operator. O tem, kdaj uporabiti za ključ v dict
in kdaj za ključ v dict.keys()
, glej David Goodger's Idiomatic Python article (arhivirana kopija).