Guy s
Guy s

Reputation: 1806

ValueError: too many values to unpack - Is it possible to ignore one value?

The following line returns an error:

self.m, self.userCodeToUserNameList, self.itemsList, self.userToKeyHash, self.fileToKeyHash = readUserFileMatrixFromFile(x,True)

The function actually returns 6 values. But in this case, the last one is useless (its None). So i want to store only 5.

Is it possible to ignore the last value?

Upvotes: 15

Views: 5892

Answers (4)

MisterMiyagi
MisterMiyagi

Reputation: 52139

It's common to use _ to denote unneeded variables.

a, b, c, d, e, _ = my_func_that_gives_6_values()

This is also often used when iterating a certain number of times.

[random.random() for _ in range(10)]  # gives 10 random values

Python 3 also introduced the * for assignment, similar to how *args takes an arbitrary number of parameters. To ignore an arbitrary number of arguments, just assign them to *_:

a, b, c, d, e, *_ = my_func_that_gives_5_or_more_values()

This can be used at any point in your assignment; you can fetch the first and last values and ignore padding in the middle:

>>> a, b, c, *_, x, y, z = range(10)
>>> print(a, b, c, '...', x, y, z)
0 1 2 ... 7 8 9

Upvotes: 11

AdrienW
AdrienW

Reputation: 3462

Just slice the last one out:

self.m,  self.userCodeToUserNameList, \
self.itemsList, self.userToKeyHash, \
self.fileToKeyHash = readUserFileMatrixFromFile(x,True)[:-1]

EDIT after TigerhawkT3's comment :

Note that this works only if the return object supports slicing.

Upvotes: 0

Valerio Crini
Valerio Crini

Reputation: 1987

Just, use the throw-away variable '_'

  self.m, 
  self.userCodeToUserNameList, 
  self.itemsList, 
  self.userToKeyHash, 
  self.fileToKeyHash, 
  _ = readUserFileMatrixFromFile(x,True)

here '_' is deliberately ignored.

Upvotes: 0

Idos
Idos

Reputation: 15320

You can use *rest from Python 3.

>>> x, y, z, *rest = 1, 2, 3, 4, 5, 6, 7
>>> x
1
>>> y
2
>>> rest
[4, 5, 6, 7]

This way you can always be sure to not encounter unpacking issues.

Upvotes: 35

Related Questions