Python 从嵌套字典中检索值列表
我正在使用Python 2.7 我有以下清单:Python 从嵌套字典中检索值列表,python,list,dictionary,Python,List,Dictionary,我正在使用Python 2.7 我有以下清单: mylist = [ {u'id': 5650, u'children': [ {u'id': 4635}, {u'id': 5648} ]}, {u'id': 67, u'children': [
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]
我不可能把它们都弄到手
有什么线索吗?
childrenids=[elem['children'][0]['id']mylist中的elem]
为什么[0]
?这将只获取第一个子项的值
相反,请尝试使用
childrenids=[child['id']作为mylist中的elem,作为elem['children']]
childrenids=[elem['children'][0]['id']作为mylist中的elem]
为什么[0]
?这将只获取第一个子项的值
相反,请尝试
childrenids=[child['id']for elem in mylist for elem for child in elem['children']]
我的解决方案遍历列表中的元素(假设每个元素都是有效的字典),并根据“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
我的解决方案遍历列表中的元素(假设每个元素都是有效的字典),并根据“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
@彼得伍德OP有目录列表,所以没有重复的键。@彼得伍德OP有目录列表,所以没有重复的键。