2014-01-30 5 views
1

사전 목록이 있다고 가정하십시오.사전 목록 목록에서 키 값 목록?

필자는 파이썬이 키와 연관된 값을 검색하기 위해 (짧게 2 개를 쓰지 않고) 멋지고 짧은 방법을 가지고 있음을 확신합니다. (모든 사전에는 키가 있습니다.)

어떻게하면됩니까?

편집 : 입력 내가 이름의 목록을 가지고 싶습니다 출력으로

[ 
    [ 
     { 
      "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 표현)가있다.

추 신 : ODBL에서의 데이터입니다.

+3

샘플 입력 및 출력을 제공하십시오. –

답변

2

당신이 단순 목록에있는 모든 이름이 필요한 경우 :

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

이렇게하면 중첩 목록이 병합됩니다. 이것이 의도 된 것인지 아닌지는 확실하지 않습니다. –

+0

글쎄, 나는이 일에도 관심이 있었다. 그래. –

1

은 사전 L리스트의 목록을 전화 : 당신은 내 목록 결과를 얻으려면

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

합니다. 그런 다음 각 하위 목록을 반복 한 다음 각 사전을 반복하여 목록 이해를 사용하여 모든 이름을 검색 할 수 있습니다. 이 모든 이름의 평탄화 된 목록을 반환 (그리고 귀하의 의견에 두 번 표시하기 때문에 그 'Chavant'가 두 번 표시) 것을

데모

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

참고.