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