一行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中的异常处理学习笔记
Jan 28 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
浅谈MySQL中的触发器
May 05 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python部署web开发程序的几种方法
May 05 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
django基于restframework的CBV封装详解
Aug 08 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
Django设置Postgresql的操作
May 14 Python
python中如何进行连乘计算
May 28 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
python pyhs2 的安装操作
Apr 07 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加密解密示例分享
2014/01/29 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
Jquery 插件开发笔记整理
2011/01/17 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
python实现的简单窗口倒计时界面实例
2015/05/05 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Django接收自定义http header过程详解
2019/08/23 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python几种常见算法汇总
2020/06/02 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
美国电视购物:QVC
2017/02/06 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
保健品市场营销方案
2014/03/31 职场文书
商场周年庆活动方案
2014/08/19 职场文书