如何解决遍历一棵树多巢
如果嵌套最多10个级别且每个级别具有不同的长度,则存在父级,子级,孙级以及更多关系,例如下面给出的json(id
在每个列表中都是唯一的)。找到uni_code
并将另一个对象(子对象)插入其列表的最佳方法是什么?
{
"id": "1","status": "active","created": "","children": [{
"id": "1","children": [{
"id": "1","children": [{
"id": "1","children": [
],"uni_code": "EGCFJ1"
},{
"id": "1","uni_code": "D356RY"
},],"uni_code": "EGCFJ1"
},"uni_code": "Y7TUP8"
},{
"id": "4","children": [
],"uni_code": "WA1JNS"
},"uni_code": "I429TD"
}
解决方法
根据您在评论中的后续问题,我相信我现在已经理解您的要求了……并相应地更新了我的答案。
通常,您可以使用递归调用自身的函数遍历像树一样的递归数据结构。
我的意思是
def insert_into_tree(tree,new_child,target):
if tree['uni_code'] == target:
tree['children'].append(new_child)
return True
for child in tree['children']:
if insert_into_tree(child,target):
return True
return False # `target` not found.
data = {
"id": "1","status": "active","created": "","children": [
{
"id": "1","children": [
{
"id": "1","children": [
{
"id": "1","children": [],"uni_code": "EGCFJ1"
},{
"id": "1","uni_code": "D356RY"
}
],"uni_code": "EGCFJ1"
}
],"uni_code": "Y7TUP8"
},{
"id": "4","uni_code": "WA1JNS"
}
],"uni_code": "I429TD"
}
new_object = {
"id": "1","uni_code": "THX1138"
}
target = "EGCFJ1"
if insert_into_tree(data,new_object,target):
print(f'new child added to {target!r}')
else:
print(f'{target!r} not found,new child not added')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。