ValueError: Nicht genügend Werte zum Entpacken in Python

Zeeshan Afridi 10 Oktober 2023
  1. Was ist ein ValueError in Python
  2. Fix ValueError: not enough values to unpack in Python Dictionaries
  3. ValueError: not enough values to entpack in Python behoben
ValueError: Nicht genügend Werte zum Entpacken in Python

Es ist ein häufiger Fehler, wenn Sie sich frisch mit der Python-Programmierung die Hände schmutzig machen, oder manchmal könnte es ein Typfehler sein, dass Sie mehr Werte, aber weniger Variablen (Container) bereitstellen, um diese Werte abzufangen. Oder wenn Sie versuchen, die Werte oder Schlüssel eines Wörterbuchs zu durchlaufen, aber versuchen, gleichzeitig auf beide zuzugreifen.

Dieser Artikel wird jedes Szenario zusammen mit Beispielen im Detail betrachten, aber vorher wollen wir verstehen, was ein ValueError in Python ist.

Was ist ein ValueError in Python

Ein ValueError ist eine häufige Ausnahme in Python, die auftritt, wenn die Anzahl der Werte nicht mit der Anzahl der Variablen übereinstimmt, die entweder Eingaben, direkte Zuweisungen oder über ein Array annehmen oder auf eingeschränkte Werte zugreifen. Um den ValueError zu verstehen, nehmen wir ein Beispiel.

# this input statement expects three values as input
x, y, z = input("Enter values for x, y and z: ").split(",")

Ausgang:

Enter values for x, y and z: 1,2
ValueError: not enough values to unpack (expected 3, got 2)

Im obigen Beispiel haben wir drei Variablen x,y,z, um die Eingabewerte abzufangen, aber wir stellen zwei Eingabewerte bereit, um den ValueError zu demonstrieren.

Jetzt hat die input-Anweisung drei Werte, und da die Benutzereingabewerte nicht die erwartete Bedingung erfüllen, wirft sie den ValueError: not enough values to unpack (expected 3, got 2).

Der Fehler selbst ist selbsterklärend; Es sagt uns, dass die erwartete Anzahl von Werten drei ist, Sie aber 2 angegeben haben.

Einige andere häufige Ursachen für ValueError könnten die folgenden sein.

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]

Fix ValueError: not enough values to unpack in Python Dictionaries

In Python ist ein Wörterbuch eine weitere Datenstruktur, deren Elemente sich in Schlüssel-Wert-Paaren befinden, jeder Schlüssel sollte einen entsprechenden Wert gegenüber dem Schlüssel haben, und Sie können mit ihren Schlüsseln auf die Werte zugreifen.

Syntax eines Wörterbuchs in Python:

student = {"name": "Zeeshan Afridi", "degree": "BSSE", "section": "A"}

Dies ist die allgemeine Struktur eines Wörterbuchs; die Werte links sind Schlüssel, während die anderen Werte der Schlüssel sind.

Wir haben Funktionen für Python, Wörterbücher wie keys(), values(), items() usw. spezifiziert. Aber dies sind die gebräuchlichsten und nützlichsten Funktionen, um ein Wörterbuch zu durchlaufen.

print("Keys of Student dictionary: ", student.keys())
print("Values of Student dictionary: ", student.values())
print("Items of Student dictionary: ", student.items())

Ausgang:

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')])

Mal sehen, warum der ValueError: not enough values to unpack in Python-Wörterbüchern auftritt.

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))

Ausgang:

ValueError: not enough values to unpack (expected 3, got 2)

Wie Sie sehen können, hat der obige Code einen Fehler ausgelöst, weil die .items()-Funktionen zwei Variablen erwarten, um die Schlüssel und Werte des student-Wörterbuchs zu erfassen, aber wir haben drei Variablen k,v,l bereitgestellt. .

Im Wörterbuch student ist also kein Platz für l, und es wirft den ValueError: not enough values to unpack (expected 3, got 2).

Um dies zu beheben, müssen Sie die Variablen des Wörterbuchs korrigieren.

for k, v in student.items():

Dies ist die richtige Anweisung, um ein Wörterbuch in Python zu durchlaufen.

ValueError: not enough values to entpack in Python behoben

Um solche Ausnahmen in Python zu vermeiden, sollten Sie den Variablen die erwartete Anzahl von Werten zuweisen und nützliche Meldungen anzeigen, die Sie bei der Eingabe von Daten in Formulare oder Textfelder anleiten.

Darüber hinaus können Sie try-catch-Blöcke verwenden, um solche Fehler abzufangen, bevor Ihre Programme zum Absturz kommen.

Lassen Sie uns verstehen, wie man den ValueError: not enough values to unpack in Python behebt.

# 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)

Ausgang:

Enter three numbers to multiply  ::  2,2,2
The product of x,y and z is  ::  8

Hier in diesem Beispiel erwartet die Anweisung input drei Eingaben, und wir haben die erwartete Anzahl von Eingaben bereitgestellt, sodass kein ValueError ausgelöst wurde.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error