error de valor de python

Python no desempaqueta bien las bolsas. Cuando vea el error " 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:

En Python, " desempaquetar " 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:

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:

En este ciclo, desempaquetamos " hidrògeno " en dos valores: clave y valor. Queremos " clave " para corresponder a las claves de nuestro diccionario y " valor " para corresponder a los valores.

< / a>

Ejecutemos nuestro còdigo y veamos qué sucede:

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:

Hemos agregado el método items () hasta el final de " 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:

Nuestro còdigo devuelve:

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;

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

Nuestras claves y valores se descomponen del " hidrògeno " 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:

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:

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

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:

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

Conclusiòn

El " valueerror: demasiados valores para descomprimir (esperado 2) " 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 !