2017-01-08 1 views
0

저는 Python 2.7을 사용하고 있습니다. 내가 시도중첩 된 사전에서 값 목록 검색

[4635, 5648, 77] 

:

childrenids = [elem['children'][0]['id'] for elem in mylist] 

그러나 이것은 단지

mylist = [ 
     {u'id': 5650, 
       u'children': [ 
        {u'id': 4635}, 
        {u'id': 5648} 
          ]}, 
     {u'id': 67, 
       u'children': [ 
        {u'id': 77} 
          ]} 
     ] 

내가 모든 어린이 ID의 목록을 검색하고 싶습니다 :

나는 다음과 같은 목록을 가지고 나를 각 어린이들에게 첫 번째로 준다 :

[4635, 77] 

나는 모든 것을 관리 할 수 ​​없습니다.

단서가 있습니까?

+0

@PeterWood OP에는 dicts 목록이 있으므로 중복 키가 없습니다. – DeepSpace

답변

2

childrenids = [elem['children'][0]['id'] for elem in mylist]

[0]? 이것은 첫 번째 자녀의 가치만을 부여합니다.

대신 childrenids = [child['id'] for elem in mylist for child in elem['children']]을 시도하십시오.

0

내 솔루션은 목록의 요소를 반복하며 (각 요소는 유효한 사전이라고 가정 함) 'id'및 'children'명명 규칙에 따라 각 요소의 유형을 확인합니다.

def extract_id_values(mylist): 
    ids_to_return_list = [] 

    for element in mylist: 
     for key, value in element.items(): 
      if 'id' == key: 
      ids_to_return_list.append(value) 
      if 'children' == key: 
      for children_elem in value: 
       if 'id' in children_elem: 
       ids_to_return_list.append(children_elem['id']) 
    return ids_to_return_list 
관련 문제