2014-01-30 61 views
1

假设我有一个词典列表。字典列表的列表中的键值列表?

我很确定Python有一个很好很短的方法(不写2 for循环)来检索与该键相关联的值。 (每个字典都有一个关键字)。

我该怎么做?

编辑:还有就是输入

[ 
    [ 
     { 
      "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" : "" 
     } 
    ] 
] 

,因为我想有名称的列表输出的一个样本(JSON表示)。 PS:ODBL下的数据。

+3

请提供样本输入和输出。 –

回答

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] 
+0

这也将扁平化嵌套列表。不确定这是否是有意的。 –

+0

好吧,我也有兴趣这样做。所以是的。 –

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'出现了两次,因为它在你的输入中出现两次)。