python 递归实现节点层级关系

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': [] }] }] }]

 *第一个函数是先判断有无子节点,再添加到数组中

* 第二个函数是先加到数组中,再判断有无子节点

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章