Aşağıdaki kod biraz kafamı karıştırdı:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Anlamadığım şey "anahtar" kısmı. Python sözlükten sadece anahtarı okuması gerektiğini nasıl anlıyor? Python'da anahtar
özel bir kelime mi? Yoksa sadece bir değişken mi?
key` sadece bir değişken adıdır.
for key in d:
anahtarlar ve değerler yerine sözlükteki anahtarlar üzerinde döngü oluşturacaktır. Hem anahtar hem de değer üzerinde döngü yapmak için aşağıdakileri kullanabilirsiniz:
Python 2.x için:
for key, value in d.iteritems():
Python 3.x için:
for key, value in d.items():
Kendiniz test etmek için "anahtar" kelimesini "kaka" olarak değiştirin.
Python 3.x için, iteritems()
yerine, iteritems()
gibi ama daha da iyi olan dict tarafından desteklenen küme benzeri bir görünüm döndüren basitçe items()
kullanılmıştır.
Bu aynı zamanda 2.7de
viewitems()` olarak da mevcuttur.
items()işlemi hem 2 hem de 3 için çalışacaktır, ancak 2'de dictionary'nin
(key, value)çiftlerinin bir listesini döndürecektir, bu da dict'te
items()çağrısından sonra meydana gelen değişiklikleri yansıtmayacaktır. Eğer 3.x'te 2.x davranışını istiyorsanız,
list(d.items())` çağrısı yapabilirsiniz.
Sözlükler arasında for .. in ..
sözdizimini kullanarak yineleme yaptığınızda, her zaman anahtarlar üzerinde yineleme yapar (değerlere sözlük[anahtar]
kullanılarak erişilebilir).
Anahtar-değer çiftleri üzerinde yineleme yapmak için Python 2'de for k,v in s.iteritems()
, Python 3'te ise for k,v in s.items()
kullanın.
Bu çok yaygın bir döngü deyimidir. in
bir operatördür. Ne zaman for key in dict
kullanılacağı ve ne zaman for key in dict.keys()
olması gerektiği için David Goodger'ın Idiomatic Python makalesine (arşivlenmiş kopya) bakın.