Ich versuche, ein Wörterbuch mithilfe einer Funktion zu aktualisieren, die ein Tupel zurückgibt, wobei das erste Element eine Zeichenfolge ist.Das Wörterbuch wird nicht mit einer Zeichenfolge als Schlüssel aktualisiert
>>> def t():
... return 'ABC', 123
Allerdings die dict.update
Funktion gefällt es nicht ganz.
>>> d = {}
>>> d.update(t())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is required
Ich kann auch Wörterbuch Verständnis versuchen und das gleiche unerwartete Ergebnis erhalten.
>>> d.update({k: v for k, v in t()})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
ValueError: too many values to unpack (expected 2)
Die einzige funktionierende Möglichkeit besteht darin, zuerst den zurückgegebenen Wert zu speichern.
>>> x = t()
>>> d.update({x[0]: x[1]})
>>> d
{'ABC': 123}
Wie erklärt man das?
Mein Missverständnis kam von der Tatsache, dass eine iterierbare Länge zwei (d. H. '(A, b)') es schaffen würde. Tatsächlich erwartet die "update" -Funktion eine iterierbare Anzahl von Iterablen der Länge zwei (d. H. "[(A, b)]"). – Spack