一行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模拟鼠标拖动操作的方法
Mar 11 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
python中黄金分割法实现方法
May 06 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Python读取stdin方法实例
May 24 Python
wxPython实现画图板
Aug 27 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
Python requests用法和django后台处理详解
Mar 19 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面试题附答案
2009/01/07 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
js微信支付实现代码
2016/12/22 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
在Python中使用dict和set方法的教程
2015/04/27 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python Shapely使用指南详解
2020/02/18 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
大学生活动总结怎么写
2014/04/29 职场文书
员工自我工作评价
2015/03/06 职场文书
单位实习介绍信
2015/05/05 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Java中的随机数Random
2022/03/17 Java/Android
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技