将文件名列表转换为类似于di的树

2024-04-29 02:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件名列表,希望将它们打印为目录树:

files = ["foo/bar/Bla", "foo/bar/Foo", "foo/foo/Bsdf", "xsd/sdafd/saasf"]
[...]
# output should look like this 
output = ['foo' : ['bar' : ['Bla', 'Foo'], 'foo' : ['Bsdf']], 'xsd' : ['sdafd' : ['saasf']]]

我尝试了不同的方法,但我不能比这样做更进一步:

^{pr2}$

或者类似的。。。在


Tags: 目录列表outputfoo文件名barfilesxsd
2条回答

此代码适用于您的输入:

def recurse_setdefault(res, array):
    if len(array) == 0:
        return
    elif len(array) == 1:
        res.append(array[0])
    else:
        recurse_setdefault(res.setdefault(array[0], [] if len(array) == 2 else {}), array[1:])

res = {}
for f in files:
    recurse_setdefault(res, f.split("/"))

结果是:

^{pr2}$

找不到一条线

files = ["foo/bar/Bla", "foo/bar/Foo", "foo/foo/Bsdf", "xsd/sdafd/saasf"]

dict_add = lambda x, y={}: dict_add(x[:-1], y).setdefault(x[-1], {}) if(x) else y
base_dict = {}
map(lambda x: dict_add(x, base_dict), [path.split("/") for path in files])

相关问题 更多 >