2015-12-16 13 views
9

Ritengo che ciò sia molto semplice e che io sia vicino alla soluzione, ma sono stato impilato e non riesco a trovare suggerimenti in Internet.
Ho lista che si presenta come:Crea dizionario da stringhe sdoppiate dall'elenco di stringhe

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

In generale, ogni elemento della lista ha la forma: [email protected]_number.
Voglio rendere il dizionario in modo carino, che ha key = namex e value = some_number. Posso farlo da:

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

Ma mi piacerebbe farlo in una riga, con la comprensione delle liste o qualcosa del genere. Ho provato a seguire, e penso di non essere lontano da quello che voglio.

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

Tuttavia, sto ricevendo errore: ValueError: too many values to unpack. Non ho idea di come uscire da questo.

risposta

15

In realtà non è necessario il passaggio aggiuntivo di creazione del tuple

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

Questo è così buona, grazie !. Sembra che abbia provato a farlo anche in modo complicato. –