У меня есть структура, которая выглядит следующим образом:
[ {'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} ]
}
]
}
]
У меня также есть список выбранных идентификаторов, [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
Кажется, что это работает нормально, но мне было интересно, есть ли более умный способ сделать это, возможно, используя списки или генераторы.
Может кто-нибудь придумать для этого более изящное решение?