2017-02-17 7 views
1
my_list = [ [1,2], [2,3], [3,4] ] 

# my attempt 
output = { {'a':k[0], 'b':k[1]} for k in my_list } 

#desired output 
[ {a:1, b:2}, {a:2, b:3}, {a:3,b:4} ] 

Gibt es eine Möglichkeit, das Diktatverständnis zu erhalten, ein Diktat mit mehreren Schlüsseln zurückzugeben?Dict aus dem dict-Verständnis der verschachtelten Liste zurückgeben

+4

Sie benötigen eine Liste Verständnis statt dict comp '[{ 'a': k [0], 'b': k [1]} für k in my_list]' da die endgültige Ausgabe ist eine Liste. – Psidom

Antwort

5

Vielleicht wollte man dies tun:

output = [ {'a':k[0], 'b':k[1]} for k in my_list ] 
#  ^         ^

die wir eine Liste-Verständnis in Python nennen.

3

Ihre äußere Struktur sollte eine Liste für Ihre Ausgabe sein, und Sie versuchen, ein Satzverstehen im Gegensatz zu einem Listenverständnis falsch auszuführen. Dies schlägt fehl, weil die gesetzten Elemente hashbar sein müssen und dicts nicht so, wie sie veränderbar sind. Zusätzlich können Sie die Listenelemente in diesem Fall etwas klarer entpacken.

>>> [dict(a=x, b=y) for x, y in my_list] 
[{'a': 1, 'b': 2}, {'a': 2, 'b': 3}, {'a': 3, 'b': 4}] 
1
my_list = [ [1,2], [2,3], [3,4] ] 
[dict(zip(['a', 'b'], x)) for x in my_list] 
Verwandte Themen