ValueError: No hay suficientes valores para desempaquetar en Python
-
¿Qué es un
ValueError
en Python? -
Arreglar
ValueError: no hay suficientes valores para desempaquetar
en los diccionarios de Python -
Arreglar
ValueError: no hay suficientes valores para desempaquetar
en Python
Es un error común cuando recién se está ensuciando las manos con la programación de Python, o a veces podría ser un error de tipo que proporciona más valores pero menos variables (contenedores) para capturar esos valores. O cuando intenta iterar sobre los valores o claves de un diccionario pero intenta acceder a ambos simultáneamente.
Este artículo analizará cada escenario en detalle junto con ejemplos, pero antes de eso, comprendamos qué es un ValueError
en Python.
¿Qué es un ValueError
en Python?
Un ValueError
es una excepción común en Python que ocurre cuando la cantidad de valores no coincide con la cantidad de variables, ya sea tomando entrada, asignación directa o a través de una matriz o accediendo a valores restringidos. Para entender el ValueError
, tomemos un ejemplo.
# this input statement expects three values as input
x, y, z = input("Enter values for x, y and z: ").split(",")
Producción :
Enter values for x, y and z: 1,2
ValueError: not enough values to unpack (expected 3, got 2)
En el ejemplo anterior, tenemos tres variables x,y,z
para capturar los valores de entrada, pero proporcionamos dos valores de entrada para demostrar el ValueError
.
Ahora la instrucción input
tiene tres valores, y dado que los valores ingresados por el usuario no cumplen con la condición esperada, arroja el ValueError: no hay suficientes valores para desempaquetar (se esperaban 3, se obtuvieron 2)
.
El error en sí mismo se explica por sí mismo; nos dice que el número esperado de valores es tres, pero ha proporcionado 2.
Algunas otras causas comunes de ValueError
podrían ser las siguientes.
a, b, c = 3, 5 # ValueError: not enough values to unpack (expected 3, got 2)
a, b, c = 2 # ValueError: not enough values to unpack (expected 3, got 1)
# ValueError: not enough values to unpack (expected 4, got 3)
a, b, d, e = [1, 2, 3]
Arreglar ValueError: no hay suficientes valores para desempaquetar
en los diccionarios de Python
En Python, un diccionario es otra estructura de datos cuyos elementos están en pares clave-valor, cada clave debe tener un valor correspondiente contra la clave, y puede acceder a los valores con sus claves.
Sintaxis de un diccionario en Python:
student = {"name": "Zeeshan Afridi", "degree": "BSSE", "section": "A"}
Esta es la estructura general de un diccionario; los valores de la izquierda son claves, mientras que los demás son valores de las claves.
Hemos especificado funciones para Python, diccionarios como keys()
, values()
, items()
, etc. Pero estas son las funciones más comunes y útiles para recorrer un diccionario.
print("Keys of Student dictionary: ", student.keys())
print("Values of Student dictionary: ", student.values())
print("Items of Student dictionary: ", student.items())
Producción :
Keys of Student dictionary: dict_keys(['name', 'degree', 'section'])
Values of Student dictionary: dict_values(['Zeeshan Afridi', 'BSSE', 'A'])
Items of Student dictionary: dict_items([('name', 'Zeeshan Afridi'), ('degree', 'BSSE'), ('section', 'A')])
Veamos por qué aparece el ValueError: no hay suficientes valores para desempaquetar
en los diccionarios de Python.
student = {
# Keys : Values
"name": "Zeeshan Afridi",
"degree": "BSSE",
"section": "A",
}
# iterate user dictionary
for k, v, l in student.items(): # This statement throws an error
print("Key:", k)
print("Value:", str(v))
Producción :
ValueError: not enough values to unpack (expected 3, got 2)
Como puede ver, el código anterior ha arrojado un error porque las funciones .items()
esperan que dos variables capturen las claves y valores del diccionario student
, pero hemos proporcionado tres variables k,v,l
.
Así que no hay espacio para l
en el diccionario estudiante
, y arroja el ValueError: no hay suficientes valores para desempaquetar (se esperaban 3, se obtuvieron 2)
.
Para arreglar esto, necesitas arreglar las variables del diccionario.
for k, v in student.items():
Esta es la declaración correcta para iterar sobre un diccionario en Python.
Arreglar ValueError: no hay suficientes valores para desempaquetar
en Python
Para evitar tales excepciones en Python, debe proporcionar la cantidad esperada de valores a las variables y mostrar mensajes útiles para guiarlo durante el ingreso de datos en formularios o cualquier campo de texto.
Además de eso, puede usar bloques try-catch
para capturar dichos errores antes de bloquear sus programas.
Comprendamos cómo solucionar el ValueError: no hay suficientes valores para desempaquetar
en Python.
# User message --> Enter three numbers to multiply ::
x, y, z = input("Enter three numbers to multiply :: ").split(",")
# type casting x,y, and z
x = int(x)
y = int(y)
z = int(z)
prod = x * y * z
print("The product of x,y and z is :: ", prod)
Producción :
Enter three numbers to multiply :: 2,2,2
The product of x,y and z is :: 8
Aquí, en este ejemplo, la instrucción input
espera tres entradas, y hemos proporcionado el número esperado de entradas, por lo que no arroja ningún ValueError
.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python