一行python实现树形结构的方法
2019-08-09 10:58
1306 查看
定义
使用内置的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实现树形结构的方法就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- 树形结构JSON的实现方法(也叫做JSON嵌套格式)
- Python树结构之一行代码实现
- Python一行代码实现快速排序的方法
- Python实现优先级队列结构的方法详解
- sqlserver实现树形结构递归查询(无限极分类)的方法
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- 一行python代码实现树结构
- vue.js与element-ui实现菜单树形结构的解决方法
- 递归函数实现无限级树形结构的一种方法
- 多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法)
- 树形结构JSON的实现方法
- python计算文件的行数和读取某一行内容的实现方法
- @contextmanager:Python实现with结构的好方法
- Python提取Linux内核源代码的目录结构实现方法
- php实现数据树形结构 递归方法
- Python实现优先级队列结构的方法详解
- Python实现 Linux tree命令:用树形结构显示目录结构
- Python中实现结构相似的函数调用方法
- Python使用win32com模块实现数据库表结构自动生成word表格的方法