一行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实现网站文件的全备份和差异备份
Nov 30 Python
进一步理解Python中的函数编程
Apr 13 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Django 前后台的数据传递的方法
Aug 08 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
python list元素为tuple时的排序方法
Apr 18 Python
python 提取key 为中文的json 串方法
Dec 31 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
Python如何调用外部系统命令
Aug 07 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 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
PHP实现的memcache环形队列类实例
2015/07/28 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
sina的lightbox效果。
2007/01/09 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
pandas object格式转float64格式的方法
2018/04/10 Python
python移位运算的实现
2019/07/15 Python
执行Python程序时模块报错问题
2020/03/26 Python
python和php哪个容易学
2020/06/19 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
奥利奥广告词
2014/03/20 职场文书
优秀员工演讲稿
2014/05/19 职场文书
个人求职信格式范文
2015/03/20 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
行政复议决定书
2015/06/24 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
vue+element ui实现锚点定位
2021/06/29 Vue.js
python_tkinter事件类型详情
2022/03/20 Python
python数字图像处理:图像的绘制
2022/06/28 Python