如何在嵌套字典中创建具有所有字典名称的文件夹?代码应该遍历字典并创建目录结构,就像嵌套字典一样,保留所有层次结构。
dic = {
"root": {
'0_name': {
"0_name_a": {
"0_name_a_a": {
},
"0_name_a_b": {
"file": "file"
}
},
"0_name_b": {
}
},
"1_name": {
},
"2_name": {
},
"3_name": {
"3_name": {
},
}
}
}
应该制作如下目录:
root/0_name
root/0_name/0_name_a
root/0_name/0_name_a/0_name_a_a
root/0_name/0_name_a/0_name_a_b
root/0_name/0_name_b
root/1_name/1_name_a
root/2_name/
root/3_name/3_name(the same name)
脚本需要确定该值是否为最终值,并使用该路径创建一个文件夹,然后从字典中删除该值并重新开始。也不知何故认识到";文件";键入并跳过它。我无法确定迭代所有值并将其添加到路径中的递归方式。
我的方法(绝对不起作用,只是粘贴它来显示一些东西(:
def rec(dic):
path = []
def nova(dic):
for k, v in dic.copy().items():
if isinstance(v, dict):
path.append(k)
if not v:
print(os.path.join(*path))
path.clear()
dic.pop(k)
nova(v)
if path == []:
nova(dic)
您将需要一个递归程序;路径";需要成为递归的一部分。
这不是你想要的,但很接近。
def handle_problem(dic):
def one_directory(dic, path):
for name, info in dic.items():
next_path = path + "/" + name
if isinstance(info, dict):
print("Creating " + next_path) # actually use mkdir here!
one_directory(info, next_path)
one_directory(dic, '')