2013-02-20 40 views
6

我有一個列表的列表具有非常特殊結構的列表,它看起來像如下:從列表來字典

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

我想這LOL(名單列表)轉變成以下形式的字典(注意,在LOL的每個列表的第二個元素應該是唯一的,因此,對於我的字典了良好的關鍵:

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

我能爲循環做了,但我一直在尋找一種更優雅的pythonic方式去做。

謝謝!

回答

6

使用字典理解,可在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

這是最Python化的解決方案,我相信,用dictionary comprehensions

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

如果它不可用(如:在Python < 2.7)中,可以使用以下解決方案:

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

像這樣:

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