我正在使用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]
我无法得到所有这些。
有任何线索吗?
答案 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