python 父子节点生成字典

lines = [(1, 1, '父1节点'), (2, 1, '1-2'), (3, 1, '1-3'), (4, 3, '1-3-4'), (5, 3, '1-3-5'), (6, 3, '1-3-6'),
     (7, 7, '父7节点'), (8, 7, '7-8'), (9, 7, '7-9')] # (id, prarentId, name)

nodes = {}
data_temp =[]
for line in lines:
    id, parentId, name = line
# nodes[]保存需要的字典格式 nodes[id]
= {'children': [], 'id': id, "parentId": parentId, "name": name, 'orLeafnode': '1'} # orLeafnode 是叶子节点 # data_temp 保存id,parentId
data_temp.append({'id': id, "parentId": parentId}) data = [] for i in data_temp: id = i['id'] parent_id = i['parentId'] node = nodes[id] if id == parent_id: node['orLeafnode'] = '0' data.append(node) else: parent = nodes[parent_id] parent['orLeafnode'] = '0' parent['children'].append(node) print(data)
输出:
[{
    'children': [{
        'children': [],
        'id': 2,
        'parentId': 1,
        'name': '1-2',
        'orLeafnode': '1'
    }, {
        'children': [{
            'children': [],
            'id': 4,
            'parentId': 3,
            'name': '1-3-4',
            'orLeafnode': '1'
        }, {
            'children': [],
            'id': 5,
            'parentId': 3,
            'name': '1-3-5',
            'orLeafnode': '1'
        }, {
            'children': [],
            'id': 6,
            'parentId': 3,
            'name': '1-3-6',
            'orLeafnode': '1'
        }],
        'id': 3,
        'parentId': 1,
        'name': '1-3',
        'orLeafnode': '0'
    }],
    'id': 1,
    'parentId': 1,
    'name': '父1节点',
    'orLeafnode': '0'
}, {
    'children': [{
        'children': [],
        'id': 8,
        'parentId': 7,
        'name': '7-8',
        'orLeafnode': '1'
    }, {
        'children': [],
        'id': 9,
        'parentId': 7,
        'name': '7-9',
        'orLeafnode': '1'
    }],
    'id': 7,
    'parentId': 7,
    'name': '父7节点',
    'orLeafnode': '0'
}]



参考: http://www.cocoachina.com/articles/69831

原文地址:https://www.cnblogs.com/snailgirl/p/11653844.html