2015-09-09 30 views
5

ho trovato qualcosa di simile in un codice con cui sto lavorando:della funzione Assegna ad una costante lista vuota in python

[], my_variable = my_function(a, b) 

in cui l'uscita di my_function va come:

return some_dict, some_list 

Questo sembra funzionare - test di unità di un sistema non fallire, ma quando provo questo alla console python (dizionario assegnando a "[]") solleva:

ValueError: too many values to unpack 

Hai visto qualcosa del genere? Come si assegna un dizionario (o qualcos'altro) alla costante lista vuota "[]" funziona?

oppure non e test manca qualcosa ...

+0

effettivo 'codice my_function' sarebbe utile - probabilmente il primo risultato non è un dict affatto:' [], qwe = {1: 1}, '12'' getta valore errore – J0HN

+1

'[], a = ({}, 1)' funziona, comunque. – Kevin

+0

'[a], qwe = {1: 2}, '12'' funziona allo stesso modo; 'a' è diventato 1 – J0HN

risposta

2

È perché nel file di test, il return value è {}.

>>> [] = {} 
>>> [] = {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

O si sa più di quanto è esposto in questione, o questo non risponde alla domanda – J0HN

+0

@Kevin python dict o list fintanto che è iterable. – Andrey

+0

Sì, molto probabilmente 'some_dict' è solo' {} 'nel caso di test. Grazie! – Gwidryj

1

Non si può davvero assegnare ad elencare, perché non è variabile, è possibile utilizzare la sintassi elenco per assegnare a più variabili:

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

sarà solo assegna 1 ad una e così via.

Quello che state facendo può essere espresso con questa espressione:

[] = {"a":1} 

Cosa pitone cerca di fare è quello di abbinare quantità di oggetti in dizionario con quantità di elementi della lista. Trova disallineamento e genera un errore. Si potrebbe fare così:

[x] = {"a":1}