樹狀結構 陣列 字典處理

各位大神好:
現在在寫一個要呈現樹狀結構的畫面,看了網路上的範例都類似此範例

資料都會寫成陣列裡面包字典,但像這些都是寫死的

而我在寫的是像電腦檔案管理或GOOGLE DRIVE 資料夾可能無限延伸下去
所以不能寫死

像上圖 ID 798 799 800就是1個資料夾裡又有一個資料夾,那可以無限延伸,所以應該是要用迴圈寫;
但實在想不到 怎麼如範例一樣,整理成一個樹狀結構QQ

可能效能不是很好XD
想法是先將每個資料夾底下一層有誰記錄下來,並把最上層資料夾抓出來
將最上層的資料夾加入,並加入他的子資料夾,當加入子資料夾時,同時也要把他底下的一起加入

import pandas as pd
import json

# 為每一個資料夾建立下一層有什麼
def add_children_col(df):
    # 為每一個資料夾建立空的 list 在後面,或者用另一個 dict 也行
    df['children'] = [[] for i in df.index]
    # root_set 為最上層資料夾
    root_set = []
    for i in df.index:
        # 需改成你的條件
        if df['parent'][i] != 0:
            df['children'][df['parent'][i]].append(i)
        else:
            root_set.append(i)
    return root_set

# 加入他底下的資料夾
def add_children(df, tree, child_list):
    for i in child_list:
        tree[i] = ({'children': dict()})
        # 將子子資料夾也要加入至子資料夾底下
        add_children(df, tree[i]['children'], df['children'][i])
# 如果需要,將 id 設為 dataframe 的 row index
# df.set_index('id', inplace=True)

root_set = add_children_col(folder)
tree = dict()
add_children(folder, tree, root_set)
print(json.dumps(tree, indent=2))