从嵌套字典中检索值列表

时间:2017-01-08 14:20:08

标签: python list dictionary

我正在使用Python 2.7。

我有以下列表:

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

我想检索所有子ID的列表:

[4635, 5648, 77]

我试过了:

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

但这只给了我每个孩子的第一个:

[4635, 77]

我无法得到所有这些。

有任何线索吗?

2 个答案:

答案 0 :(得分:3)

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

为什么[0]?这只会抓住第一个孩子的价值。

而是尝试childrenids = [child['id'] for elem in mylist for child in elem['children']]

答案 1 :(得分: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