2

我有一个动态列表,可能如下所示:

['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
       file

hello

我怎样才能在 Python 中做到这一点?

以下代码将构造列表到文件的根目录。之后我该如何继续?

 [i.split('/') for i in a]
4

2 回答 2

4

这是一个非常粗略的算法:

  • 对于列表中的每个字符串:
    • 将其拆分为路径组件
    • 对于每个组件:
      • 检查当前级别是否有该名称的树节点,否则创建它
      • 如果是非叶子节点,则将刚刚访问(或创建)的节点设为当前节点
于 2013-06-13T11:29:36.837 回答
4

您可以非常简单地构建层次结构,如下所示:

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': {}}}
于 2013-06-13T11:42:53.923 回答