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

 *第一個函數是先判斷有無子節點,再添加到數組中

* 第二個函數是先加到數組中,再判斷有無子節點

 

 

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