词典列表列表中键的值列表?

时间:2014-01-30 21:25:19

标签: python list dictionary

假设我有一个词典列表的列表。

我非常确定Python有一个很好的简短方法(没有编写2个for循环)来检索与密钥相关的值。 (每个字典都有一个键)。

我该怎么做?

编辑:输入

的示例(JSON表示)
[
    [
        {
            "lat": 45.1845931, 
            "lgt": 5.7316984, 
            "name": "Chavant", 
            "sens": "", 
            "line" : [],
            "stationID" : ""
        }, 
        {
            "lat": 45.1845898, 
            "lgt": 5.731746, 
            "name": "Chavant", 
            "sens": "", 
            "line" : [],
            "stationID" : ""
        }
    ], 
    [
        {
            "lat": 45.1868233, 
            "lgt": 5.7565727, 
            "name": "Neyrpic - Belledonne", 
            "sens": "", 
            "line" : [],
            "stationID" : ""
        }, 
        {
            "lat": 45.1867322, 
            "lgt": 5.7568569, 
            "name": "Neyrpic - Belledonne", 
            "sens": "", 
            "line" : [],
            "stationID" : ""
        }
    ]
]

作为输出,我想要一个名单。

PS:ODBL下的数据。

2 个答案:

答案 0 :(得分:2)

如果您需要平面列表中的所有名称:

response = # your big list
[d.get('name') for lst in response for d in lst]

如果你想得到内部列表的结果:

[[d.get('name') for d in lst] for lst in response]

答案 1 :(得分:1)

调用您的词典列表L。然后,您可以通过迭代每个子列表然后遍历每个字典来使用列表推导检索所有名称。

<强>演示

>>> vals = [ d['name'] for sublist in L for d in sublist ]
>>> vals
[u'Chavant', u'Chavant', u'Neyrpic - Belledonne', u'Neyrpic - Belledonne']

请注意,这会返回所有名称的拼合列表(并且'Chavant'出现两次,因为它在您的输入中显示两次)。