2015-12-16 10 views
9

これは非常に簡単で解決方法は近いですが、スタックされてインターネット上で提案を見つけることができません。一般的に文字列のリストから分割された文字列から辞書を作成する

my_list = ['[email protected]', '[email protected]', '[email protected]'] 

、リストの各要素は、フォームがあります:[email protected]_number
私は次のようになりますリストを持っています。
私はかなりの方法で辞書を作りたいと思っています。それはkey = namexvalue = some_numberです。私はそれを行うことができます:

md = {} 
for item in arguments: 
    md[item.split('@')[0]] = item.split('@')[1] 

しかし、私はリストの理解か何かでそれを1行でやりたいと思います。私は次のことを試みました、そして、私は私が望むものから遠くないと思います。

md2 = dict((k,v) for k,v in item.split('@') for item in arguments) 

ただし、エラー:ValueError: too many values to unpackが発生しています。これからどうやって抜け出すのか分かりません。

答えて

15

あなたが実際にタプル

>>> my_list = ['[email protected]', '[email protected]', '[email protected]'] 
>>> dict(i.split('@') for i in my_list) 
{'name3': '3333', 'name1': '1111', 'name2': '2222'} 
+0

これはとても良いですが、あなたに感謝を作成する余分なステップを必要としません!複雑なやり方でやってみたように見えます。 –

関連する問題