Python ValueError: too many values to unpack

self.materials is a dict and by default you are iterating over just the keys (which are strings).

Since self.materials has more than two keys*, they can’t be unpacked into the tuple “k, m“, hence the ValueError exception is raised.

In Python 2.x, to iterate over the keys and the values (the tuple “k, m“), we use self.materials.iteritems().

However, since you’re throwing the key away anyway, you may as well simply iterate over the dictionary’s values:

for m in self.materials.itervalues():

In Python 3.x, prefer dict.values() (which returns a dictionary view object):

for m in self.materials.values():

Leave a Comment