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