tag = [{'id': 1, 'name': 'xa', 'code': '1000', 'parentCode': 'null'}, {'id': 2, 'name': 'xb', 'code': '1010', 'parentCode': '1000'}, {'id': 3, 'name': 'xc', 'code': '1011', 'parentCode': '1000'}, {'id': 4, 'name': 'xd', 'code': '1111', 'parentCode': '1011'}, {'id': 5, 'name': 'xe', 'code': '1112', 'parentCode': '1011'}, {'id': 6, 'name': 'xf', 'code': '2000', 'parentCode': 'null'}, {'id': 7, 'name': 'xg', 'code': '2010', 'parentCode': '2000'}, {'id': 8, 'name': 'xh', 'code': '2111', 'parentCode': '2010'}] def one(tag): pl =[] for i in tag: if i['parentCode'] == 'null': i['children'] = two(tag,i) pl.append(i) print(pl) def two(tag,parent): cl=[] for i in tag : if i['parentCode'] == parent['code']: cl.append(i) i['children'] = two(tag,i) return cl one(tag)
节点参考https://www.cnblogs.com/mqhpy/p/14636757.html
执行结果
[{ 'id': 1, 'name': 'xa', 'code': '1000', 'parentCode': 'null', 'children': [{ 'id': 2, 'name': 'xb', 'code': '1010', 'parentCode': '1000', 'children': [] }, { 'id': 3, 'name': 'xc', 'code': '1011', 'parentCode': '1000', 'children': [{ 'id': 4, 'name': 'xd', 'code': '1111', 'parentCode': '1011', 'children': [] }, { 'id': 5, 'name': 'xe', 'code': '1112', 'parentCode': '1011', 'children': [] }] }] }, { 'id': 6, 'name': 'xf', 'code': '2000', 'parentCode': 'null', 'children': [{ 'id': 7, 'name': 'xg', 'code': '2010', 'parentCode': '2000', 'children': [{ 'id': 8, 'name': 'xh', 'code': '2111', 'parentCode': '2010', 'children': [] }] }] }]
*第一个函数是先判断有无子节点,再添加到数组中
* 第二个函数是先加到数组中,再判断有无子节点