Daugiau
Iteravimas per žodynus naudojant 'for' kilpas
Mane šiek tiek glumina šis kodas:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Nesuprantu key
dalies. Kaip "Python" atpažįsta, kad iš žodyno reikia perskaityti tik raktą? Ar key
yra specialus žodis Pythone? Ar tai tiesiog kintamasis?
2875
3
key
yra tik kintamojo vardas.paprasčiausiai peržvelgs žodyno raktus, o ne raktus ir reikšmes. Norėdami peržvelgti ir raktą, ir reikšmę, galite naudoti šiuos veiksmus:
Python 2.x:
Python 3.x:
Norėdami išbandyti patys, pakeiskite žodį
key
įpoop
.Python 3.x versijoje
iteritems()
buvo pakeistas tiesiogitems()
, kuris grąžina į rinkinį panašų vaizdą, paremtą dict, panašiai kaipiteritems()
, bet dar geriau. Ši funkcija taip pat prieinama 2.7 versijoje kaipviewitems()
.Operacija
items()
veiks ir 2, ir 3, tačiau 2 atveju ji grąžins žodyno(key, value)
porų sąrašą, kuriame neatsispindės poitems()
iškvietimo įvykę dict pakeitimai. Jei norite, kad 3.x versijoje būtų elgiamasi kaip 2.x versijoje, galite iškviestilist(d.items())
.Kai iteruojate žodynus naudodami
for .. in ..
sintaksę, visada iteruojate per raktus (reikšmės pasiekiamos naudojantžodynas[raktas]
).Norėdami iteruoti rakto ir vertės poras, Python 2 programoje naudokite
for k,v in s.iteritems()
, o Python 3 programojefor k,v in s.items()
.Tai labai paplitusi ciklo idioma.
in
yra operatorius. Apie tai, kada reikia naudotifor key in dict
, o kadafor key in dict.keys()
, žr. David Goodger's Idiomatic Python straipsnį (archyvinė kopija).