'too many values to unpack', iterating over a dict. key=>string, value=>list
For Python 3.x iteritems
has been removed. Use items instead.
for field, possible_values in fields.items():
print(field, possible_values)
Python 3
Use items()
.
for field, possible_values in fields.items():
print(field, possible_values)
Python 2
Use iteritems()
.
for field, possible_values in fields.iteritems():
print field, possible_values
See this answer for more information on iterating through dictionaries, such as using items()
, across Python versions.
For reference, iteritems()
was removed in Python 3.
For lists, use enumerate
for field, possible_values in enumerate(fields):
print(field, possible_values)
iteritems
will not work for list objects
You want to use iteritems. This returns an iterator over the dictionary, which gives you a tuple(key, value)
>>> for field, values in fields.iteritems():
... print field, values
...
first_names ['foo', 'bar']
last_name ['gravy', 'snowman']
Your problem was that you were looping over fields, which returns the keys of the dictionary.
>>> for field in fields:
... print field
...
first_names
last_name