Python 将文件名列表转换为树状目录
我有一个文件名列表,希望将其打印为目录树:Python 将文件名列表转换为树状目录,python,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']]] 我尝试了不同的方法,但我只能做这样的事情:
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']]]
我尝试了不同的方法,但我只能做这样的事情:
['foo/bar': ['Bla', 'Foo'], 'foo/foo/': ['Bsdf'], 'xsd/sdafd' : ['saasf']]
或类似…此代码适用于您的输入:
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("/"))
结果是:
{'foo': {'bar': ['Bla', 'Foo'], 'foo': ['Bsdf']}, 'xsd': {'sdafd': ['saasf']}}
找不到一艘班轮
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])
您是自己定义路径列表,还是动态生成路径列表?如果后者是真的,你应该看看