Resolver ValueError: demasiados valores para desempaquetar(esperado 2) en los diccionarios de Python

Olorunfemi Akinlua 21 junio 2023
  1. Resuelva ValueError: demasiados valores para desempaquetar (se esperaban 2) usando las teclas del diccionario
  2. Resolver ValueError: demasiados valores para desempaquetar (se esperaban 2) usando valores de diccionario
  3. Resuelva ValueError: demasiados valores para desempaquetar (se esperaban 2) usando el diccionario elementos ()
Resolver ValueError: demasiados valores para desempaquetar(esperado 2) en los diccionarios de Python

Cuando tratamos con diccionarios o listas en Python, existe una alta probabilidad de que suceda ValueError. A menudo, esto se debe a que se pasa el índice o la propiedad incorrectos al acceder a un valor.

Con los diccionarios, al recorrer los valores, es necesario comprender los métodos apropiados para recorrer los diccionarios a fin de evitar los mensajes de error ValueError o demasiados valores para desempaquetar (se esperaban 2).

Este artículo discutirá tres métodos para atravesar o acceder a las propiedades y valores del diccionario y evitar el error ValueError: demasiados valores para desempaquetar (se esperaban 2).

Resuelva ValueError: demasiados valores para desempaquetar (se esperaban 2) usando las teclas del diccionario

Antes de resolver el mensaje de error, repliquemos el escenario que causa el error ValueError: demasiados valores para desempaquetar (se esperaban 2).

Si tenemos un diccionario y queremos recorrer las claves y los valores y planeamos imprimir las claves y los valores. Algunos novatos pueden tener la tentación de probar el fragmento de código a continuación:

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key, values in dictionary:
    print("Key: " + key)
    print("Value: " + str(values))
    print("===")

La salida del código:

Traceback (most recent call last):
  File "c:\Users\akinl\Documents\HTML\python\dict.py", line 8, in <module>
    for key, values in dictionary:
ValueError: too many values to unpack (expected 2)

El mensaje de error, ValueError: demasiados valores para desempaquetar (se esperaban 2) se muestra dentro de su área de salida, y para resolver esto, debemos entender que el bucle for/in funciona iterando sobre iterable (lista, tupla , conjunto, etc).

Sin embargo, en el caso de un diccionario, solo las claves son iterables directamente, sin ningún método. Por lo tanto, para que el código funcione, necesitamos acceder solo a una variable para acceder a la clave, clave, y no a dos para acceder a la clave y el valor.

Ahora, lo que nos queda es cómo acceder al valor. Para acceder al valor, podemos usar la variable única, clave, dentro de la notación de corchetes, diccionario[clave].

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key in dictionary:
    value = dictionary[key]
    print("Key: " + key)
    print("Value: " + str(value))
    print("===")

La salida del código:

Key: color
Value: blue
===
Key: shape
Value: square
===
Key: volume
Value: 40
===

Con el simple cambio de código, eliminamos el error ValueError: demasiados valores para desempaquetar (se esperaban 2) e iteramos sobre el objeto del diccionario dentro de Python sin ningún problema.

Resolver ValueError: demasiados valores para desempaquetar (se esperaban 2) usando valores de diccionario

Usando el mismo escenario, podemos acceder a los valores directamente usando el método values() que viene con el objeto del diccionario. Con esto, tenemos acceso a los valores en lugar de las claves.

Por lo tanto, para el mismo escenario, solo podemos acceder a los valores. Es útil en casos donde solo los valores son útiles.

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for value in dictionary.values():
    print("Value: " + str(value))
    print("===")

La salida del código:

Value: blue
===
Value: square
===
Value: 40
===

Resuelva ValueError: demasiados valores para desempaquetar (se esperaban 2) usando el diccionario elementos ()

Con el primer fragmento de código que dio el error ValueError: demasiados valores para desempaquetar (esperado 2), podemos mantener las dos variables con la ayuda de un método de diccionario, elementos () sin ningún error.

El método items(), cuando lo aplicamos a un diccionario, devuelve un par clave-valor (objeto de vista) que se almacena dentro de una tupla. Con la ayuda de la desestructuración, podemos analizar los dos valores en variables (clave y valor) y usarlos dentro de nuestro bloque de código de bucle for para acceder a las claves y valores por separado.

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key, value in dictionary.items():
    print("Key: " + str(key))
    print("Value: " + str(value))
    print("===")

La salida del código:

Key: color
Value: blue
===
Key: shape
Value: square
===
Key: volume
Value: 40
===

Para comprender mejor lo que genera dictionary.items(), el siguiente código es útil.

print(dictionary.items())

Producción :

dict_items([('color', 'blue'), ('shape', 'square'), ('volume', 40)])

La salida es una lista dict_items que contiene tuplas sobre las que podemos iterar.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - Python Error