2016-05-04 13 views
1

の辞書にリストのリストを変換:私はリストのリストを変換しようとしているリスト

x = [[1, 2], [1, 3], [1, 3, 4], [1, 2, 5]] 

各リストのインデックスが(辞書のキー開始されたリストの辞書に1):

new_dictionary = {1: [1, 2], 2: [1, 3], 3: [1, 3, 4], 4: [1, 2, 5]} 

私は大きなリストを使って作業しますが、効率的なやり方はありますか?

+0

は、Python配列が0インデックス、1は、索引付けされていないことに注意してください。 – TigerhawkT3

+0

その他:あなたはなぜそれを望みますか? –

+1

@tobias_k - それも知っているのは好奇妙です。各キーが入力リストのインデックスである辞書は、機能的にはリストと同じです。それは意味がないようです。 – TigerhawkT3

答えて

3

はい、dictコンストラクタは、最初の項目がキーで2番目が値であるタプルの繰り返し可能なものを取ります。

これはまさにenumerate戻っている:

new_dictionary = dict(enumerate(x)) 

その後new_dictionaryが含まれています:最初のキーは0、ない1であること

{0: [1, 2], 1: [1, 3], 2: [1, 3, 4], 3: [1, 2, 5]} 

お知らせ。あなたは、一つまたは何か他のものから始めるenumeratestart=1パラメータを使用する場合:

>>> dict(enumerate(x, start=1)) 
{1: [1, 2], 2: [1, 3], 3: [1, 3, 4], 4: [1, 2, 5]} 

私はあなたのユースケースについて好奇心、しかし、リストや辞書ので、非常によく似た方法で使用することができます

>>> x[0] 
[1, 2] 
>>> new_dictionary[0] 
[1, 2] 

本当にこのための辞書が必要ですか?

+2

'start = 1'を使うと良いです(OP _really_がそれを望んでいると仮定して) –

+0

' start = 1'で、キーはもはや元のインデックスと一致しません。 – TigerhawkT3

+1

ええ、例と説明は矛盾しています: "各リストのインデックスは辞書のキーです"そして次に1から始まる。良い点。 –

0

あなたはこのようdict comprehensionを使用する必要があります。

new_dictionary = {index + 1: value for index, value in enumerate(x)} 
関連する問題