ValueError: demasiados valores para desempaquetar. ¿Es posible ignorar un valor?

La siguiente línea devuelve un error:

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

La función en realidad devuelve 6 valores. Pero en este caso, el último es inútil (no es ninguno). Así que quiero almacenar sólo 5.

¿Es posible ignorar el último valor?

Related of "ValueError: demasiados valores para desempaquetar. ¿Es posible ignorar un valor?"

Puedes usar *rest de Python 3.

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

De esta manera, siempre puede estar seguro de no tener problemas para desempacar.

Es común usar _ para denotar variables innecesarias.

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

Esto también se usa a menudo cuando se itera un cierto número de veces.

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

Python 3 también introdujo el * para la asignación, de manera similar a como *args toma un número arbitrario de parámetros. Para ignorar un número arbitrario de argumentos, simplemente asignarlos a *_ :

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

Esto se puede utilizar en cualquier momento de su asignación; puede obtener el primer y último valor e ignorar el relleno en el medio:

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

Solo corta el último

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

EDITAR después del comentario de TigerhawkT3 :

Tenga en cuenta que esto solo funciona si el objeto de retorno admite el corte en sectores.

Solo, use la variable de desecho ‘_’

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

Aquí ‘_’ es ignorado deliberadamente.