一行python实现树形结构的方法


Posted in Python onAugust 09, 2019

定义

使用内置的defaultdict 我们可以很容易的定义一个树形数据结构

def tree(): return defaultdict(tree)

example:

json风格

users = tree()
users['harold']['username'] = 'bell'
users['handler']['username'] = 'master'

我们可以使用print(json.dumps(users))以json的形式输出,于是我们看到

{'harold': {'username': 'bell'}, 'handler': {'username': 'master'}}

不需要赋值

taxonomy= tree()
taxonomy['Animalia']['Chordata']['Mammalia']['Carnivora']['Felidae']['Felis']['cat']
taxonomy['Animalia']['Chordata']['Mammalia']['Carnivora']['Felidae']['Panthera']['lion']
taxonomy['Animalia']['Chordata']['Mammalia']['Carnivora']['Canidae']['Canis']['dog']
taxonomy['Animalia']['Chordata']['Mammalia']['Carnivora']['Canidae']['Canis']['coyote']
taxonomy['Plantae']['Solanales']['Solanaceae']['Solanum']['tomato']
taxonomy['Plantae']['Solanales']['Solanaceae']['Solanum']['potato']
taxonomy['Plantae']['Solanales']['Convolvulaceae']['Ipomoea']['sweet potato']

这时我们需要将他们转换成为标准的字典

def dicts(t): return {k: dicts(t[k]) for k in t}

我们用pprint(dicts(taxonomy))来输出结构

迭代

这颗树可以很欢乐的被迭代处理,同样因为只要简单的引用一个接口它就会出现

举例来说,假设我们想要解析一个新动物的列表,将他们加入我们上面的taxonomy, 我们只需要调用这样一个函数

add(taxonomy, 'Animalia,Chordata,Mammalia,Cetacea,Balaenopteridae,Balaenoptera,blue whale'.split(','))

我们可以简单的实现它

def add(t, keys):
  for key in keys:
    t = t[key]

以上这篇一行python实现树形结构的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python安装Flask环境及简单应用示例
May 03 Python
Python微信操控itchat的方法
May 31 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Django获取应用下的所有models的例子
Aug 30 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 Python
Python绘制数码晶体管日期
Feb 19 Python
Python办公自动化PPT批量转换操作
Sep 15 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 #Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 #Python
Python Django 命名空间模式的实现
Aug 09 #Python
Mac安装python3的方法步骤
Aug 09 #Python
对python 树状嵌套结构的实现思路详解
Aug 09 #Python
Python  Django 母版和继承解析
Aug 09 #Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 #Python
You might like
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
告诉你什么是javascript的回调函数
2014/09/04 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
python解析xml文件实例分享
2013/12/04 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
python购物车程序简单代码
2018/04/18 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
Python生成词云的实现代码
2020/01/14 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
现金会计岗位职责
2013/12/05 职场文书
北京天坛导游词
2015/02/12 职场文书
小学教师党员承诺书
2015/04/27 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫