python将列表数据转换成树结构数据

  • Post author:
  • Post category:python


将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 版权协议,转载请附上原文出处链接和本声明。