2013-02-20 9 views
6

ich eine Liste von Listen mit einer sehr spezifischen Struktur habe, sieht es wie folgt aus:Aus einer Liste von Listen in ein Wörterbuch

lol = [['geo','DS_11',45.3,90.1,10.2],['geo','DS_12',5.3,0.1,0.2],['mao','DS_14',12.3,90.1,1],...] 

ich diese lol zu transformieren möchte (Liste der Listen) in ein Wörterbuch der folgenden Form (beachten Sie, dass das zweite Element jeder Liste im lol soll einzigartig, so ein guter Schlüssel für meinen dict sein:

dict_lol = {'DS_11': ['geo','DS_11',45.3,90.1,10.2], 'DS_12':['geo','DS_12',5.3,0.1,0.2], 'DS_14':['mao','DS_14',12.3,90.1,1],...} 

I for-Schleife ein tun könnte, aber ich war auf der Suche nach eine elegantere pythonische Art es zu tun

Danke!

Antwort

6

ein Wörterbuch Verständnis, in Python 2.7+

In [93]: {x[1]:x for x in lol} 
Out[93]: 
{'DS_11': ['geo', 'DS_11', 45.3, 90.1, 10.2], 
'DS_12': ['geo', 'DS_12', 5.3, 0.1, 0.2], 
'DS_14': ['mao', 'DS_14', 12.3, 90.1, 1]} 
5

dies die Pythonic Lösung ist, glaube ich, dictionary comprehensions mit:

dict_lol = {item[1]: item for item in lol} 

Falls es nicht verfügbar ist (zB. In Python < 2.7) können Sie folgende Lösung verwenden:

dict_lol = dict((item[1], item) for item in lol) 
2

So:

{l[1]:l for l in lol} 
Verwandte Themen