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 の各リストの 2 番目の要素は一意である必要があることに注意してください。したがって、私の 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],...}

forループを実行できましたが、よりエレガントなpythonicの方法を探していました。

ありがとう!

4

3 に答える 3

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]}
于 2013-02-20T17:33:54.063 に答える
5

これは、辞書内包表記を使用した、最も Pythonic なソリューションだと思います。

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

利用できない場合 (Python <2.7 など) は、次の解決策を使用できます。

dict_lol = dict((item[1], item) for item in lol)
于 2013-02-20T17:34:24.377 に答える
2

このような:

{l[1]:l for l in lol}
于 2013-02-20T17:34:45.443 に答える