Ich bin etwas verwirrt über den folgenden Code:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Was ich nicht verstehe, ist der "Schlüssel"-Teil. Wie erkennt Python, dass es nur den Schlüssel aus dem Wörterbuch lesen muss? Ist Schlüssel
ein besonderes Wort in Python? Oder ist es einfach eine Variable?
Schlüssel" ist nur ein Variablenname.
for key in d:
durchläuft einfach eine Schleife über die Schlüssel im Wörterbuch und nicht über die Schlüssel und Werte. Um eine Schleife über Schlüssel und Wert zu ziehen, können Sie Folgendes verwenden:
Für Python 2.x:
for key, value in d.iteritems():
Für Python 3.x:
for key, value in d.items():
Um es selbst zu testen, ändern Sie das Wort key
in poop
.
Für Python 3.x wurde iteritems()
durch einfaches items()
ersetzt, das eine mengenähnliche Ansicht zurückgibt, die durch das Diktat unterstützt wird, wie iteritems()
, aber noch besser.
Dies ist auch in 2.7 als viewitems()
verfügbar.
Die Operation items()
wird sowohl für 2 als auch für 3 funktionieren, aber in 2 wird sie eine Liste der (key, value)
Paare des Diktats zurückgeben, die keine Änderungen am Diktat widerspiegelt, die nach dem items()
Aufruf geschehen. Wenn Sie das Verhalten von 2.x in 3.x wollen, können Sie list(d.items())
aufrufen.
Wenn Sie mit der for .. in ..
-Syntax durch Wörterbücher iterieren, wird immer über die Schlüssel iteriert (die Werte sind über dictionary[key]
zugänglich).
Um über Schlüssel-Wert-Paare zu iterieren, verwenden Sie in Python 2 for k,v in s.iteritems()
, und in Python 3 for k,v in s.items()
.
Dies ist ein sehr gebräuchliches Idiom für Schleifen. in
ist ein Operator. Für die Verwendung von for key in dict
und wann es for key in dict.keys()
sein muss, siehe David Goodger's Idiomatic Python article (archived copy).