2015-09-09 6 views
5

ich so etwas wie dies in einem Code gefunden habe, ich arbeite mit:Assign-Funktion der Ausgabe auf leere Liste konstant in Python

[], my_variable = my_function(a, b) 

, wo die Ausgabe von my_function wie geht:

return some_dict, some_list 

Diese scheint zu funktionieren - Komponententests eines Systems nicht fehlschlagen, aber wenn ich dies an der Python-Konsole versuche (Zuordnung Wörterbuch zu "[]") es wirft:

ValueError: too many values to unpack 

Haben Sie so etwas gesehen? Wie funktioniert das Zuweisen eines Wörterbuchs (oder etwas anderes) zur leeren Listenkonstante "[]"?

Oder es funktioniert nicht und Tests etwas fehlen ...

+0

Actual 'my_function' Code wäre hilfreich - wahrscheinlich das erste Ergebnis nicht ein dict überhaupt ist:' [], qwe = {1: 1}, ‚12'' wirft Wert Fehler – J0HN

+1

'[], a = ({}, 1)' funktioniert, obwohl. – Kevin

+0

'[a], qwe = {1: 2}, '12'' funktioniert auch; 'a' wurde 1 – J0HN

Antwort

2

Es ist, weil in der Testdatei, die return value{} ist.

>>> [] = {} 
>>> [] = {1:2} 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 


>>> [] = [] 
>>> [] = [1,2] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 
+0

Entweder wissen Sie mehr als in Frage gestellt ist, oder dies beantwortet die Frage nicht – J0HN

+0

@Kevin Python dict oder Liste, solange es iterierbar ist. – Andrey

+0

Ja, wahrscheinlich ist 'some_dict' nur' {} 'im Testfall. Vielen Dank! – Gwidryj

1

Sie können nicht wirklich zur Liste zuweisen, weil es nicht variabel ist, können Sie die Liste Syntax verwenden, um mehrere Variablen zuweisen:

[a, b, c] = [1, 2, 3] 

nur 1 bis a zuweisen und so weiter.

Was Sie tun können mit diesem Ausdruck ausgedrückt werden:

[] = {"a":1} 

Was Python zu tun versucht, ist mit der Menge der Elemente in der Liste Menge der Elemente im Wörterbuch entsprechen. Es findet keine Übereinstimmung und löst einen Fehler aus. Sie könnten so tun:

[x] = {"a":1}