2017-06-30 8 views
-1

私は以下のようなリストを持っています: data = ['a:b', 'c:d', 'e:f', 'g:h'] 私はdictを作成する必要があります。入れ子リストの理解を使ってリストから辞書を作成する

xx = [i.split(":") for i in data] 
d = {k:v for k,v in xx} 

それが動作します。この方法が、私は1行に入れしようとしたときに、エラーが出たとき、あまりにも多くの価値を解凍します。

右側に操作文を追加することはできません(分割など)。タスクの最適化された方法は他にありますか?

+3

をあなたはel.split(( '辞書を試してみましたデータのエル) '?私は確かに、それを説明している二重引用符があります。 –

+0

うまくいきました。 上記のシナリオが機能しない具体的な理由は何ですか? – Dcode

+1

あなたが書こうとしていたのは、次のとおりです: '{k:vのk、vの(i.split()のiのデータ)}' –

答えて

1

それだけ(例えば、dict.items()など)の要素の反復可能な帰国組のために働くだろうので、あなたはfor k, v in i.split(":")を行うことができない、とsplit()はフラットなリストを返します。

>>> {k: v for k, v in (i.split(":") for i in data)} 
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h'} 

それともdict()コンストラクタを使用します:あなたはsplit()部分はリストの内包やジェネレータ式を使用する必要があります):「」

>>> dict(i.split(":") for i in data) 
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h'} 
関連する問題