一行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编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
django启动uwsgi报错的解决方法
Apr 08 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
python 获取等间隔的数组实例
Jul 04 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
django使用JWT保存用户登录信息
Apr 22 Python
python 通过文件夹导入包的操作
Jun 01 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
PHP实现验证码校验功能
2017/11/16 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
详解使用Python处理文件目录的相关方法
2015/10/16 Python
python中import reload __import__的区别详解
2017/10/16 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
python机器人运动范围问题的解答
2019/04/29 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
小学美术教学反思
2014/02/01 职场文书
个人函授自我鉴定
2014/03/25 职场文书
应聘护士求职信
2014/07/21 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
会计岗位说明书
2014/07/29 职场文书
妇女工作先进事迹
2014/08/17 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
日元符号 ¥
2022/02/17 杂记