ValueError: too many values to unpack

Python functions can return multiple variables . These variables can be stored in variables directly. This is a unique property of Python , other programming languages such as C++ or Java do not support this by default. ValueError is a standard Exception raised by various methods that perform range-checking of some kind to signal that a value provided to the method fell outside the valid range .


How to fix python ValueError: too many values to unpack

The valueerror: too many values to unpack occurs during a multiple-assignment where you either don't have enough objects to assign to the variables or you have more objects to assign than variables. If for example myfunction() returned an iterable with three items instead of the expected two then you would have more objects than variables necessary to assign to.

def getNumbers(): return 'one', 'two', 'three' one, two = getNumbers()

output

Traceback (most recent call last): File "sample.py", line 4, in <module> one, two = getNumbers() ValueError: too many values to unpack (expected 2)

fix

def getNumbers(): return 'one', 'two' one, two = getNumbers()

This works the other way around where you have more variables than objects.

def getNumbers(): return 'one' one, two = getNumbers()

output

Traceback (most recent call last): File "sample.py", line 4, in <module> one, two = getNumbers() ValueError: too many values to unpack (expected 2)

fix

def getNumbers(): return 'one' one = getNumbers()

ValueError

ValueError raised when an operation or function receives an argument that has the right type but an inappropriate value, and the situation is not described by a more precise exception such as IndexError . To encounter a ValueError in Python means that is a problem with the content of the object you tried to assign the value to.


Python TypeError  Vs. ValueError

TypeError Vs. ValueError

Passing arguments of the wrong type (e.g. passing a list when an int is expected) should result in a TypeError , but passing arguments with the wrong value (e.g. a number outside expected boundaries) should result in a ValueError .