2016-10-17 1 views
2

Ich habe folgende Python-Liste:Put-Liste in dict mit ersten Zeilenkopf als Schlüssel

[['A,B,C,D'], 
['1,2,3,4'], 
['5,6,7,8']] 

Wie kann ich es in ein dict setzen und die erste Teilliste als Schlüssel verwendet ?:

{'A': '1', 
'B': '2', 
'C': '3', 
'D': '4'} 
{'A': '5', 
'B': '6', 
'C': '7', 
'D': '8'} 

Vielen Dank im Voraus!

+0

, die wie zwei separate Wörterbücher aussieht, Welches Format wünschen Sie? Wie haben Sie ein so seltsames Format, woher kommen die Daten? –

Antwort

1

Lassen Sie uns mit Ihren Daten beginnen, wie in der Frage vorgelegt:

>>> a = [['A,B,C,D'], ['1,2,3,4'], ['5,6,7,8']] 

Jetzt wollen wir, dass der Wörterbücher auf die gewünschte Liste konvertieren:

>>> [dict(zip(a[0][0].split(','), c[0].split(','))) for c in a[1:]] 
[{'A': '1', 'C': '3', 'B': '2', 'D': '4'}, {'A': '5', 'C': '7', 'B': '6', 'D': '8'} 
1

Sie können das erste Element der Liste mit den übrigen Elementen der Liste zip nach der Zeichenfolge in jedem sublist Aufspalten:

# to split string in the sublists 
lst = [i[0].split(',') for i in lst] 

[dict(zip(lst[0], v)) for v in lst[1:]] 

#[{'A': '1', 'B': '2', 'C': '3', 'D': '4'}, 
# {'A': '5', 'B': '6', 'C': '7', 'D': '8'}] 
1

Nur eine DictReader Instanz. Die Leute benutzen diese normalerweise mit einem Dateiobjekt, aber eigentlich ist es egal, was Sie weitergeben, solange es das Ding iterieren kann.

>>> L = [['A,B,C,D'], 
... ['1,2,3,4'], 
... ['5,6,7,8']] 
>>> import csv 
>>> reader = csv.DictReader((line for [line] in L)) 
>>> d1, d2 = reader 
>>> d1 
{'A': '1', 'B': '2', 'C': '3', 'D': '4'} 
>>> d2 
{'A': '5', 'B': '6', 'C': '7', 'D': '8'} 
+0

Ich denke 'csv.DictReader ((Zeile [0] für Zeile in l))' liest ein bisschen besser. –

+0

Ich bevorzuge den Code, um 'ValueError' zu erhöhen, wenn eine Unterliste in' L' mehr als ein Element enthält. – wim

Verwandte Themen