2014-01-30 60 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'出現了兩次,因爲它在你的輸入中出現兩次)。