2015-12-16 8 views
9

Ich fühle, dass dies sehr einfach ist und ich bin nah an der Lösung, aber ich habe gestapelt, und kann keinen Vorschlag im Internet finden.
Ich habe Liste, die wie folgt aussieht:Erstellen Sie Wörterbuch aus gespaltenen Strings aus der Liste der Strings

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

Im Allgemeinen jedes Element der Liste hat die Form: [email protected]_number.
Ich möchte Wörterbuch auf hübsche Weise machen, die key = namex und value = some_number hat. Ich kann es tun durch:

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

Aber ich möchte es in einer Zeile, mit Listenverständnis oder etwas tun. Ich habe versucht, zu folgen, und ich denke, ich bin nicht weit von dem, was ich will.

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

Allerdings bekomme ich Fehler: ValueError: too many values to unpack. Keine Ahnung, wie ich hier rauskomme.

Antwort

15

Sie brauchen eigentlich nicht den zusätzlichen Schritt des Tupels zu schaffen

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

Dies ist so gut, danke !. Sieht aus, als hätte ich es auf komplizierte Art und Weise versucht. –

Verwandte Themen