2017-01-08 16 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のリストを取得したいと思います:

私は次のリストを持っています私は各子供の最初の1つを与える:

[4635, 77] 

私はそれらをすべて取得することはできません。

ヒント?なぜ[0]

+0

@PeterWood OPにはdictsのリストがありますので、重複するキーはありません。 – DeepSpace

答えて

2

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

?これは、最初の子供の値を取得するだけです。

代わりに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 
関連する問題