error de valor de python

Funciones y métodos de Python

Python no desempaqueta bien las bolsas. Cuando vea el error & ldquo; valueerror: demasiados valores para descomprimir (esperado 2) & rdquo ;, no significa que Python esté desempacando una maleta. Significa que está intentando acceder a demasiados valores desde un iterador.

En esta guía, hablamos sobre lo que significa este error y por qué se genera. Analizamos un fragmento de código de ejemplo con este error para que pueda aprender a resolverlo.




El problema: valueerror: demasiados valores para descomprimir (esperado 2)

Un ValueError es se genera cuando intenta acceder a información de un valor que no existe. Los valores pueden ser cualquier objeto, como una lista , una cadena o un diccionario.

Echemos un vistazo a nuestro mensaje de error:

 valueerror: demasiados valores para descomprimir (esperado 2) 

En Python, & ldquo; desempaquetar & rdquo; se refiere a recuperar elementos de un valor. Por ejemplo, recuperar elementos de una lista se denomina "desembalaje". esa lista. Puede ver su contenido y acceder a cada elemento de forma individual.

El mensaje de error anterior nos dice que estamos tratando de descomprimir demasiados valores de un valor. & Nbsp;

Hay dos errores que a menudo causan este error:

  • Cuando intenta iterar sobre un diccionario y descomprime sus claves y valores por separado.
  • Cuando olvide descomprimir cada elemento de una lista en una variable .

Analizamos cada uno de estos escenarios individualmente.

El 81% de los participantes afirmaron que se sentían más seguros acerca de sus perspectivas laborales después de asistir a un campamento de entrenamiento. Asigne a un bootcamp hoy mismo.

El graduado promedio de un bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Intentemos iterar sobre un diccionario. El diccionario sobre el que iteraremos almacenará información sobre un elemento en la tabla periódica. Primero, definamos nuestro diccionario:

 hidrógeno = {"nombre": "Hidrógeno" , "atomic_weight": 1.008, "atomic_number": 1} 

Nuestro diccionario tiene tres claves y tres valores. Las claves están a la izquierda de los dos puntos; los valores están a la derecha de los dos puntos. Queremos imprimir tanto las claves como los valores en la consola. Para hacer esto, usamos un bucle for:

 para clave, valor en hidrógeno: print ( "Clave:", clave) print ("Valor:", str (valor)) 

En este ciclo, desempaquetamos & ldquo; hidrógeno & rdquo; en dos valores: clave y valor. Queremos & ldquo; clave & rdquo; para corresponder a las claves de nuestro diccionario y & ldquo; valor & rdquo; para corresponder a los valores.


< / a>

Ejecutemos nuestro código y veamos qué sucede:

 Traceback (última llamada más reciente): archivo "main.py", línea 8, en & lt; módulo & gt; para clave, valor en hidrógeno: ValueError: demasiados valores para descomprimir (esperado 2) 

Nuestro código devuelve un error.

Esto se debe a que cada elemento del diccionario "hidrógeno" es un valor. Las claves y los valores no son dos valores separados en el diccionario.

Resolvemos este error utilizando un método llamado items () . Este método analiza un diccionario y devuelve claves y valores almacenados como tuplas. Agreguemos este método a nuestro código:

Ahora, intentemos ejecutar nuestro código nuevamente:

 Clave: nombre Valor: Hidrógeno Clave: atomic_weight Valor: 1.008 Clave: atomic_number Valor: 1 

Hemos agregado el método items () hasta el final de & ldquo; hidrógeno & rdquo ;. Esto devuelve nuestro diccionario con pares clave-valor almacenados como tuplas. Podemos ver esto imprimiendo el contenido de hidrógeno.items () en la consola:

 print (hidrógeno.items ()) 

Nuestro código devuelve:

 dict_items ([(' name', 'Hydrogen'), (' atomic_weight', 1.008), ('atomic_number', 1)]) 

Cada clave y valor se almacenan en su propia tupla.

Una nota para Python 2.x

En Python 2.x , usa iteritems () en lugar de items () . Esto logra el mismo resultado que logramos en el ejemplo anterior. El método items () todavía es accesible en Python 2.x. & nbsp;

 para clave, valor en hidrógeno.iteritems (): print ("Clave:", clave) print ("Valor:", str (valor)) 

Arriba, use iteritems () en lugar de items () . Ejecutemos nuestro código:

 Clave: nombre Valor: Hidrógeno Clave: atomic_weight Valor: 1.008 Clave: atomic_number Valor: 1 

Nuestras claves y valores se descomponen del & ldquo; hidrógeno & rdquo; diccionario. Esto nos permite imprimir cada clave y valor en la consola de forma individual.

Python 2.x está empezando a quedar obsoleto. Es mejor utilizar métodos más modernos cuando estén disponibles. Esto significa que items () generalmente se prefiere a iteritems () .




Ejemplo: descomprimir valores en una variable

Cuando descomprime una lista en una variable, el número de variables a las que desempaqueta los elementos de la lista debe ser igual al número de elementos de la lista. De lo contrario, se devuelve un error.


Tenemos una lista de números de punto flotante que almacena los precios de las donas en una tienda de donas local:

 donuts = [2.00, 2.50, 2.30, 2.10, 2.20] 

Descomponemos estos valores en sus propias variables. Cada uno de estos valores corresponde a las siguientes donas vendidas por la tienda:

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a igualar con un campo de entrenamiento. ¡Dos meses después de graduarme, encontré el trabajo de mis sueños que se alineaba con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Descomponemos nuestra lista en cuatro variables. Esto nos permite almacenar cada precio en su propia variable. Desempaquetemos nuestra lista:

 raspberry_jam, double_chocolate, cream_cheese, blueberry = [2.00, 2.50, 2.30, 2.10, 2.20] print (blueberry) 

Este código descomprime nuestra lista en cuatro variables. Cada variable se corresponde con una dona diferente. Imprimimos el valor de & ldquo; blueberry & rdquo; en la consola para comprobar si nuestro código funciona. Ejecute nuestro código y vea qué sucede:

 Traceback (última llamada más reciente): archivo "main.py", línea 1, en & lt; module & gt; raspberry_jam, double_chocolate, cream_cheese, blueberry = [2.00, 2.50, 2.30, 2.10, 2.20] ValueError: demasiados valores s para descomprimir (esperado 4) 

Intentamos descomprimir cuatro valores, nuestra lista contiene cinco valores. Python no sabe qué valores asignar a nuestras variables porque solo estamos desempaquetando cuatro valores. Esto da como resultado un error.

El último valor de nuestra lista es el precio de la rosquilla de chocolate. Resolvemos nuestro error especificando otra variable para descomprimir la lista:

 raspberry_jam, double_chocolate, cream_cheese, blueberry, chocolate = [2.00, 2.50, 2.30, 2.10, 2.20] print (blueberry) 

Nuestro código devuelve: 2.1. Nuestro código descomprime con éxito los valores de nuestra lista.




Conclusión

El & ldquo; valueerror: demasiados valores para descomprimir (esperado 2) & rdquo; El error ocurre cuando no descomprime todos los elementos en una lista.

Este error a menudo se debe al intentar iterar sobre los elementos en un diccionario. Para resolver este problema, use el método items () para iterar sobre un diccionario.


Otra causa común es cuando intentas descomprimir demasiados valores en variables sin asignar suficientes variables. Este problema se resuelve asegurando el número de variables a las que una lista desempaquetado es igual a la cantidad de elementos en la lista.

Ahora estás listo para resolver este error de Python como un ninja de codificación !





error de valor de python: StackOverflow Questions

Tutorials