我有一個動態列表,可能看起來像這樣:['test_data/reads1.fq', 'test_data/reads_2.fq', 'test_data/new_directory/ok.txt', 'test_data/new_directory/new_new_dir/test.txt', 'hello/hello1.txt'] and so on我想從此文件構造層次結構樹結構:test_data files new_directory file new_new_dir filehello如何在Python中執行此操作?以下代碼將列表構造到文件的根目錄。在那之后我該如何進行? [i.split('/') for i in a]
3 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
您可以非常簡單地構建層次結構,如下所示:
t = {}
for p in pp:
tt = t
for c in p.split('/'):
tt = tt.setdefault(c, {})
唯一要注意的是,葉子用空字典表示為鍵:
{'test_data': {'reads1.fq' : {},
'reads_2.fq' : {},
'new_directory': {'ok.txt' : {},
'new_new_dir': {'test.txt': {}}}},
'hello' : {'hello1.txt': {}}}

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
這是一個非常粗糙的算法:
對于列表中的每個字符串:
檢查當前級別是否有該名稱的樹節點,否則創建它
如果不是葉子,則使該節點剛剛訪問(或創建)為當前節點
將其拆分為路徑組件
對于每個組件:
添加回答
舉報
0/150
提交
取消