一行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 获取文件列表(或是目录例表)
Mar 25 Python
Python金融数据可视化汇总
Nov 17 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
一个入门级python爬虫教程详解
Jan 27 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
accesskey 提交
2006/06/26 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
C#中的验证控件有几种
2014/03/08 面试题
两道JAVA笔试题
2016/09/14 面试题
思想汇报范文
2013/11/04 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
消防安全宣传口号
2014/06/10 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
护士自荐信范文
2015/03/25 职场文书
小学英语教学随笔
2015/08/14 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python