2013-02-20 25 views
6

Mam listę list z bardzo specyficzną strukturę, to wygląda następująco:z listy list do słownika

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],...] 

chciałbym przekształcić ten lol (lista list) do słownik z poniższego formularza (należy pamiętać, że drugi element każdej listy w lol ma być wyjątkowa, więc to dobry klucz do mojego dict:

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],...} 

mogę zrobić dla pętli, ale szukałem bardziej elegancki sposób na podpowiedź.

Dzięki!

Odpowiedz

6

używać słownika zrozumieniem, dostępne w 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

Jest to najbardziej pythonowy rozwiązanie, wierzę, używając dictionary comprehensions:

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

W przypadku, gdy nie jest dostępny (np. w Pythonie < 2.7) można użyć następującego rozwiązania:

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

W ten sposób:

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