一行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 制作图片转pdf工具
Jan 30 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
深入浅析python继承问题
May 29 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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语法速查表
2006/12/06 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
基于JavaScript 类的使用详解
2013/05/07 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
vue实现弹幕功能
2019/10/25 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python isinstance函数用法详解
2020/02/13 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
造价工程师个人求职信
2013/09/21 职场文书
家长给孩子的表扬信
2014/01/17 职场文书