一行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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
python django集成cas验证系统
Jul 14 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
python3利用Socket实现通信的方法示例
May 06 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
新手入门学习python Numpy基础操作
Mar 02 Python
python实现简单坦克大战
Mar 27 Python
查看keras的默认backend实现方式
Jun 19 Python
python 中[0]*2与0*2的区别说明
May 10 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
function.inc.php超越php
2006/12/09 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
js点击选择文本的方法
2015/02/09 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python 图片验证码代码
2008/12/07 Python
python中urllib模块用法实例详解
2014/11/19 Python
Python多线程爬虫简单示例
2016/03/04 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
个人求职信范例
2014/01/29 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
新员工试用期自我评价
2015/03/10 职场文书
第一军规观后感
2015/06/12 职场文书
校园新闻稿范文
2015/07/18 职场文书
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js