一行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的Flask框架中使用日期和时间的教程
Apr 21 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
pyqt5移动鼠标显示坐标的方法
Jun 21 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
Python hashlib模块加密过程解析
Nov 05 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
利用PyTorch实现VGG16教程
Jun 24 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
浅析Python 责任链设计模式
Sep 11 Python
详解Pymongo常用查询方法总结
Jan 29 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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
VOLVO车载收音机
2021/03/02 无线电
PHP的explode和implode的使用说明
2011/07/17 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
常用DOM整理
2015/06/16 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
Augularjs-起步详解
2016/07/08 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
vue生命周期实例小结
2018/08/15 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
深入解析Python中的集合类型操作符
2015/08/19 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
学python需要去培训机构吗
2020/07/01 Python
python中的插入排序的简单用法
2021/01/19 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
一道Delphi上机题
2012/06/04 面试题
专升本个人自我评价
2013/12/22 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
单位承诺书格式
2014/05/21 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
Nginx内网单机反向代理的实现
2021/11/07 Servers