gpt4 book ai didi

python - 将类似字符串的目录树转换为嵌套列表数据结构python

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:26 25 4
gpt4 key购买 nike

我有一个“类目录树”字符串列表。我想将它转换成嵌套列表(或另一种数据结构),以强调依赖关系。例如,输入:

hierarchy_list

dir1
dir1/dir1.1
dir1/dir1.2
dir1/dir1.3/dir1.3.1/dir1.3.1.1
dir1/dir1.1/dir1.1.1
dir1/dir1.1/dir1.1.2

需要转换为:

dir1 ->
dir1.1 -> dir1.1.1 , dir1.1.2
dir1.2
dir1.3 -> dir1.3.1 , dir1.3.2

其中“->”表示“包含”(以数组属性或等效形式)。

dir1 包含 dir1.1、1.2、1.3 的列表

dir1.1 包含 dir1.1.1 , dir1.1.2 的列表

等等……

有人知道如何在 Python 中执行此操作(算法和实现)吗?

最佳答案

通过一些递归和 dict可以这样做:

代码:

def build_dir_dict(dir_name_strings):

def _build_dir_dict(path_pieces, dir_dict):
print(path_pieces)
if path_pieces:
if not path_pieces[0]:
_build_dir_dict(path_pieces[1:], dir_dict)
else:
if path_pieces[0] not in dir_dict:
dir_dict[path_pieces[0]] = {}
_build_dir_dict(path_pieces[1:], dir_dict[path_pieces[0]])

result = {}
for dir_name_string in dir_name_strings:
if dir_name_string:
_build_dir_dict(dir_name_string.split('/'), result)
return result

测试代码:

data = [x.strip() for x in """
dir1
dir1/dir1.1
dir1/dir1.2
dir1/dir1.3/dir1.3.1/dir1.3.1.1
dir1/dir1.1/dir1.1.1
dir1/dir1.1/dir1.1.2
""".split('\n')[1:-1]]

print(build_dir_dict(data))

结果:

{'dir1': {'dir1.1': {'dir1.1.1': {}, 'dir1.1.2': {}}, 
'dir1.2': {},
'dir1.3': {'dir1.3.1': {'dir1.3.1.1': {}}}
}
}

关于python - 将类似字符串的目录树转换为嵌套列表数据结构python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com