在做项目的时候遇到一个需求,有一个多层嵌套的树形结构,需要判断子类中的某个标记为True的时候同步更改父类的某个标记为True,一个简单的递归即可搞定!
数据结构
[
{
"id": 1,
"parent": None,
"expanded": False,
"children": [
{
"id": 2,
"parent": 1,
"active": True,
"children":[]
}
]
}
]
递归函数
def traverse(node):
# 递归判断active并修改父类的expanded
if 'children' in node and node['children']:
for item in node['children']:
if not item.get('active'):
continue
node['expanded'] = True
self.traverse(item)
使用
nodes = "如例子所示的数据结构"
for node in nodes:
trarverse(node)
print(nodes)