从列表列表到字典

Dna*_*iel 6 python dictionary

我有一个具有非常特定结构的列表列表,它看起来如下所示:

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],...]
Run Code Online (Sandbox Code Playgroud)

我想将这个lol(列表列表)转换为以下形式的字典(请注意,lol中每个列表的第二个元素应该是唯一的,因此是我的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],...}
Run Code Online (Sandbox Code Playgroud)

我可以做一个for循环,但我正在寻找一种更优雅的pythonic方式来做到这一点.

谢谢!

mba*_*rov 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]}
Run Code Online (Sandbox Code Playgroud)


Tad*_*eck 5

我认为,这是使用字典理解的最Pythonic解决方案:

dict_lol = {item[1]: item for item in lol}
Run Code Online (Sandbox Code Playgroud)

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

dict_lol = dict((item[1], item) for item in lol)
Run Code Online (Sandbox Code Playgroud)