2016-10-17 5 views
2

I次のPythonのリストがあります。キーとして最初の行ヘッダーで辞書にリストを入れ

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

をどのように私は辞書にそれを入れて、キーとして最初のサブリストを使用することができます?:

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

ありがとうございます!

+0

二つの別々の辞書のようになっていること、どのような実際のフォーマットが欲しいですか?また、どのようにあなたはそのような奇妙なフォーマットを持っていますか?データはどこから来ていますか? –

答えて

1

質問に提示されるのは、あなたのデータを見てみましょう:

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

さて、辞書の希望リストにそれを変換してみましょう:

>>> [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

あなたは、各サブリスト内の文字列を分割した後、リストの残りの要素を、リストの最初の要素をzipことができます。

# 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

ちょうどDictReaderインスタンスを使用します。人々は通常これらをファイルオブジェクトで使用しますが、実際にはそれを繰り返し処理できる限り、実際にはそれを渡すことには気を付けません。

>>> 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

私は 'csv.DictReader((行中の行[0]))'が少し良く読んでいると思います。 –

+0

'L 'のサブリストに複数の要素がある場合、' ValueError'を発生させるコードが好きです。 – wim

関連する問題