我有一个如下所示的结构:
[ {'id': 4, 'children': None},
{'id': 2, 'children':
[ {'id': 1, 'children':
[ {'id': 6, 'children': None},
{'id': 5, 'children': None} ]
},
{'id': 7, 'children':
[ {'id': 3, 'children': None} ]
}
]
}
]
我还有一个选定的 ID 列表,[4, 5, 6, 7]
。我想遍历列表并为列表中的每个对象添加一个selected
值为1
如果它被选中,并且0
如果不是。
目前我正在使用此函数递归地执行此操作:
def mark_selected(tree, selected):
for obj in tree:
obj['selected'] = 1 if obj['id'] in selected else 0
if obj['children'] is not None:
obj['children'] = mark_selected(obj['children'], selected)
return tree
这似乎工作正常,但我想知道是否有更聪明的方法来做到这一点,可能使用列表理解或生成器。
有人能为此想出更优雅的解决方案吗?