一行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 os模块介绍
Nov 30 Python
Python3处理文件中每个词的方法
May 22 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
python批量图片处理简单示例
Aug 06 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Python函数生成器原理及使用详解
Mar 12 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
python 利用opencv实现图像网络传输
Nov 12 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_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
js判断字符长度及中英文数字等
2014/03/19 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
公司前台辞职报告
2014/01/19 职场文书
2014年元旦活动方案
2014/02/15 职场文书
安卓程序员求职信
2014/02/28 职场文书
分公司负责人任命书
2014/06/04 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
财务负责人岗位职责
2015/02/03 职场文书
小学英语听课心得体会
2016/01/14 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
基于redis+lua进行限流的方法
2022/07/23 Redis