Mit .iteritems() zur Iteration über die Schlüssel, Wert in Python dictionary
Hinweis: ich habe dies Lesen post und Alex Martelli Antwort, aber ich weiß nicht wirklich/vollständig verstehen, seine Antwort. Es ist ein bisschen außerhalb mein Aktuelles Verständnis. Ich möchte helfen, es zu verstehen besser.
Ich verstehe, dass, wenn Sie versuchen, die folgende for-Schleife:
for key, value in dict:
print key
print value
erhalten Sie:
ValueError: too many values to unpack
Zwar können Sie die Schleife über ein Wörterbuch und nimm dir die Schlüssel mit den folgenden:
for key in dict:
print key
Kann jemand liefern, der etwas weniger-fortgeschrittene Erklärung für, warum Sie nicht die Iteration über ein dictionary mit Schlüssel, Wert ohne Verwendung .iteritems()
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die andere Antwort erklärt es gut. Aber hier sind ein paar weitere Beispiele dafür, wie er sich verhält, zeigen die Fälle, wo es tatsächlich funktioniert ohne Fehler (damit Sie etwas sehen können):
Die Schleife geht durch die Schlüssel
(1,2)
und(4,5)
und da diese "zufällig" Tupel der Größe 2, Sie können zugewiesen werden, umk
undv
.Funktioniert mit strings, solange Sie haben genau zwei Zeichen:
Ich nehme an, in deinem Fall war es so etwas?
Hier, der Schlüssel "ABC" ist eine dreifache und damit Python beschwert sich über zu versuchen, um es zu entpacken in nur zwei Variablen.
ValueError
. Ich bin das hinzufügen von mehr auf meine Antwort für diese...Python hat eine Funktion namens iterierbar Auspacken. Wenn Sie das tun
Python übernimmt
thing
ist ein Tupel oder eine Liste oder so mit 2 Elementen, und es weist die ersten und zweiten Elemente zua
undb
. Dies funktioniert auch in einemfor
Schleife:entspricht
außer es nicht schaffen, dass
c
variable.Dies bedeutet, dass, wenn Sie tun
Python kann nicht an der Tatsache, dass Sie gesagt haben
k, v
stattk
und geben Sie die Elemente statt Schlüssel, weil vielleicht die keys sind 2-Tupel. Es hat zum iterieren über die Schlüssel und versuchen zu entpacken jede Taste in derk
undv
Variablen.Während der Verwendung
for xx in XX
Sie sind eigentlich mit einem iterator zu iteriert die XX und XX werden müssen durchsuchbar. Sie könneniter
- Funktion verwenden, um einen iterator, wieund mit
next
Zugriff auf die Elemente.So, in jeder iteration
for k in d
,k
zugewiesen werdennext(i)
, und es ist nur der Schlüssel ohne Wert. z.B. in der ersten Runde der iterationWährend
.iteritems()
zurück einen anderen iterator mit kann man ein Tupel aus Schlüssel-Wert-Kombination. Prüfen wir dieseSehen? In der ersten Runde der
for k, v in d.iteritems()
, wir bekommen tatsächlich diese ZuordnungSo, wenn Sie mit
for k, v in d
erhalten SieDass eine illegale Abtretung an.
In Python 2.7.6 es scheint, möchten Sie vielleicht zu prüfen, untereigenschaften der das Wörterbuch mit
dict.has_key(property_name)
.