我正在使用Python,我有一些数据,我想将其放入树格式并分配代码。这是一些示例数据:
[{'id': 1, '_id': '0', 'name': 'A1'},
{'id': 2, 'fa_id': '1', 'name': 'B1'},
{'id': 3, 'fa_id': '1', 'name': 'B2'},
{'id': 4, 'fa_id': '2', 'name': 'C1'},
{'id': 5, 'fa_id': '2', 'name': 'C2'},
{'id': 6, 'fa_id': '3', 'name': 'C3'},
{'id': 5, 'fa_id': '3', 'name': 'C4'}]
生成以下内容:
[{'name': 'A1', 'children': [{'name': 'B1', 'children': [{'name': 'C1'}, {'name': 'C2'}]}, {'name': 'B2', 'children': [{'name': 'C3'}, {'name': 'C4'}]}]}]
感谢您的回答。
答案 0 :(得分:0)
在第一步中创建节点,然后链接它们:
>>> data = [{'id': 1, '_id': '0', 'name': 'A1'},
... {'id': 2, 'fa_id': '1', 'name': 'B1'},
... {'id': 3, 'fa_id': '1', 'name': 'B2'},
... {'id': 4, 'fa_id': '2', 'name': 'C1'},
... {'id': 5, 'fa_id': '2', 'name': 'C2'},
... {'id': 6, 'fa_id': '3', 'name': 'C3'},
... {'id': 7, 'fa_id': '3', 'name': 'C4'}]
>>>
>>> by_id = {r['id']: ({'name': r['name']}, int(r.get('fa_id', 0))) for r in data}
>>>
>>> for id, (node, parent) in by_id.items():
... if parent:
... by_id[parent][0].setdefault('children', []).append(node)
... else:
... root = node
...
>>> root
{'name': 'A1', 'children': [{'name': 'B1', 'children': [{'name': 'C1'}, {'name': 'C2'}]}, {'name': 'B2', 'children': [{'name': 'C3'}, {'name': 'C4'}]}]}