将list数据转成dict格式的树结构
测试数据:
test_data = [
{'id': 1, 'parent_id': 0, 'name': '学校'},
{'id': 2, 'parent_id': 1, 'name': 'A校区'},
{'id': 3, 'parent_id': 1, 'name': 'B校区'},
{'id': 4, 'parent_id': 1, 'name': 'C校区'},
{'id': 5, 'parent_id': 2, 'name': '小学'},
{'id': 6, 'parent_id': 3, 'name': '初中'},
{'id': 7, 'parent_id': 4, 'name': '高中'},
]
代码:
def list_to_tree(data_list, root, root_field, node_field):
# 遍历列表,如果列表的parent_id等于主节点
resp_list = [i for i in data_list if i.get(root_field) == root]
# 2次遍历列表, 第一次遍历的列表拿到的 oid 等于 第二次的 parent_id
for i in data_list:
i['children'] = [j for j in data_list if i.get(node_field) == j.get(root_field)]
return resp_list
结果:
[{'id': 1, 'parent_id': 0, 'name': '学校', 'children': [{'id': 2, 'parent_id': 1, 'name': 'A校区', 'children': [{'id': 5, 'parent_id': 2, 'name': '小学', 'children': []}]}, {'id': 3, 'parent_id': 1, 'name': 'B校区', 'children': [{'id': 6, 'parent_id': 3, 'name': '初中', 'children': []}]}, {'id': 4, 'parent_id': 1, 'name': 'C校区', 'children': [{'id': 7, 'parent_id': 4, 'name': '高中', 'children': []}]}]}]
版权声明:本文为qq_32945487原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。