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.get(parent_id)
if parent: parent[
'orLeafnode'] = '0' parent['children'].append(node)
else:
node['orLeafnode'] = '0'
data.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

posted on 2019-10-11 14:06  蜗牛也是妞  阅读(1010)  评论(0编辑  收藏  举报