In [1]: test = {}
In [2]: test["apple"] = "green"
In [3]: test["banana"] = "yellow"
In [4]: test["orange"] = "orange"
In [5]: for fruit, colour in test:
....: print fruit
....:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-32-8930fa4ae2ac> in <module>()
----> 1 for fruit, colour in test:
2 print fruit
3
ValueError: too many values to unpack
What I want is to iterate over test
and get the key and value together. If I just do a for item in test:
I get the key only.
An example of the end goal would be:
for fruit, colour in test:
print f"The fruit {fruit} is the colour {colour}"
In Python 2 you'd do:
for fruit, color in test.iteritems():
# do stuff
In Python 3, use items()
instead (iteritems()
has been removed):
for fruit, color in test.items():
# do stuff
This is covered in the tutorial.
Change
for fruit, colour in test:
print "The fruit %s is the colour %s" % (fruit, colour)
to
for fruit, colour in test.items():
print "The fruit %s is the colour %s" % (fruit, colour)
or
for fruit, colour in test.iteritems():
print "The fruit %s is the colour %s" % (fruit, colour)
Normally, if you iterate over a dictionary it will only return a key, so that was the reason it error-ed out saying "Too many values to unpack".
Instead items
or iteritems
would return a list of tuples
of key value pair
or an iterator
to iterate over the key and values
.
Alternatively you can always access the value via key as in the following example
for fruit in test:
print "The fruit %s is the colour %s" % (fruit, test[fruit])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With