398 Stimmen

'zu viele Werte zum Auspacken', Iteration über ein Diktat. key=>string, value=>list

Ich erhalte die too many values to unpack Fehler. Haben Sie eine Idee, wie ich das Problem beheben kann?

first_names = ['foo', 'bar']
last_names = ['gravy', 'snowman']

fields = {
    'first_names': first_names,
    'last_name': last_names,
}        

for field, possible_values in fields:  # error happens on this line

577voto

Philip Southam Punkte 15165

Python 3

Utilice items() .

for field, possible_values in fields.items():
    print(field, possible_values)

Python 2

Utilice iteritems() .

for field, possible_values in fields.iteritems():
    print field, possible_values

Véase diese Antwort für weitere Informationen zur Iteration durch Wörterbücher, z. B. mit items() über alle Python-Versionen hinweg.

Als Referenz, iteritems() wurde in Python 3 entfernt .

88voto

Meistro Punkte 3466

Für Python 3.x iteritems wurde entfernt. Verwenden Sie Artikel stattdessen.

for field, possible_values in fields.items():
    print(field, possible_values)

39voto

Mike Lewis Punkte 62061

Sie möchten Folgendes verwenden iteritems . Dies gibt einen Iterator über das Wörterbuch zurück, der Ihnen ein Tupel (Schlüssel, Wert) liefert

>>> for field, values in fields.iteritems():
...     print field, values
... 
first_names ['foo', 'bar']
last_name ['gravy', 'snowman']

Ihr Problem bestand darin, dass Sie eine Schleife über Felder gezogen haben, die die Schlüssel des Wörterbuchs zurückgibt.

>>> for field in fields:
...     print field
... 
first_names
last_name

13voto

Jordan Punkte 149

Für Listen, verwenden Sie enumerate

for field, possible_values in enumerate(fields):
    print(field, possible_values)

iteritems funktioniert nicht bei Listenobjekten

3voto

Vaibhav Desai Punkte 2176

Sie vermissen fields.iteritems() in Ihrem Code.

Sie können es auch anders machen, indem Sie die Werte über die Schlüssel im Wörterbuch abrufen.

for key in fields:
    value = fields[key]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X