2013-06-04 7 views
5

から辞書を作成します。私はこの形式で多くのリストを持つリストのpython

['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''] 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''] 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''] 

私は、リスト全体として、リストや値の最初の要素としてのキーで辞書を作成する必要があります。鍵のどれも繰り返しません。 これを行う最善の方法は何ですか?

答えて

5

は別のリストにすべてのあなたのリストを入れて、この操作を行います。これは、基本的に最初の要素を取得し、my_dictでキーとしてそれを置くと、値としてリストを置く

my_dict = {} 
for list in lists: 
    my_dict[list[0]] = list[:] 

を。

7
>>> lists = [['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''], 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', '']] 
>>> {x[0]: x for x in lists} 
{'1': ['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], '3': ['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''], '2': ['2', 'AP', '', '', '', '35.0000', '105.0000', '', '']} 
+0

本当に助けました。本当に助けられました –

+0

しかし、リストごとに別々の辞書を作成してリストをマージしたくない場合はどうすればいいですか? –

+0

@wannabe_geekあなたは何とかあなたのリストを保つ必要があります。それらをすべて1つのリストに入れるのが最も簡単な方法です。あなたが望むならリンクされたリストのような他のものを使うことができます。あなたの出力は同じ規則に従います。あなたはどこかに置かなければなりません。辞書は最良の選択です。 – AliBZ

0

あなたのインデックスがシーケンシャル整数である場合は、代わりのdictのリストを使用することがあります。それ本当にはしかし、あなたの問題に合う場合にのみ

lst = [None]+[x[1:] for x in sorted(lists)] 

はそれを使用。

関連する問題