Python将树结构转换成字典形式的多级菜单结构,写入json文件
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
今天有个需求是要把一个地址树转成多层嵌套的字典,写入json文件,方便测试同学了解地址树的结构,知道应该用递归,但还是折腾了一会才搞定。
代码如下:
#原始字典
tree_dict={}
# tree_root是树的根节点
def tree_to_dict(tree_root,tree_dict):
# 如果节点没有子节点,递归结束
if not tree_root.children:
return
#下面是核心代码
#如果有子节点,在对子节点进行操作
for child in tree_root.children:
# 如果tree_dict没有对应的节点地址键,
#child.data的data对应的树节点的地址,比如河北省,北京市之类的,
#那就给字典赋键值对,键就是data,值对应空字典
if not tree_dict.get(child.data):
tree_dict[child.data] = {}
# 继续对child递归,这里的关键是tree_dict要传入tree_dict[child.data],
#也就是新的空字典,思想上就是不断的给字典赋值,赋的值仍然是字典,直至结束
tree_to_dict(child, tree_dict[child.data])
else:
#如果tree_dict有对应的节点地址键,直接继续递归
tree_to_dict(child,tree_dict[child.data])
tree_to_dict(test_tree.root,tree_dict)
将最终的tree_dict写入json文件,
with open('test_tree.json','w') as f:
#利用json.dumps拍好字典的层级格式
f.write(json.dumps(tree_dict,ensure_ascii=False,indent=4))
最终看看json文件的结构效果展示
"永丰乡": {
"花石头": {
"清真寺": {
"大门": {
"侧": {}
},
"内": {
"球机": {}
},
"餐厅": {
"西": {}
},
"二": {
"殿": {}
},
"后院": {},
"外": {
"球机": {}
}
}
},
"农机站": {
"门前": {
"云台": {
"甘沟乡": {
"西白杨沟": {
"小学": {
"教学楼": {
"二楼": {
"楼梯": {}
}
}
}
}
}
}
}
},
"林场": {
"清真寺": {
"外": {
"枪机": {}
}
}
},
"永胜": {
"4队": {
"云台": {}
}
},
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:22 天前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献5条内容
所有评论(0)