博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python将树结构转换成字典形式的多级菜单结构,写入json文件
阅读量:4300 次
发布时间:2019-05-27

本文共 2080 字,大约阅读时间需要 6 分钟。

今天有个需求是要把一个地址树转成多层嵌套的字典,写入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队": {                "云台": {}            }        },

 

转载地址:http://cdxws.baihongyu.com/

你可能感兴趣的文章
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Mysql出现Table 'performance_schema.session_status' doesn't exist
查看>>
MySQL innert join、left join、right join等理解
查看>>