一行python实现树形结构的方法
定义
使用内置的defaultdict我们可以很容易的定义一个树形数据结构
deftree():returndefaultdict(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']['sweetpotato']
这时我们需要将他们转换成为标准的字典
defdicts(t):return{k:dicts(t[k])forkint}
我们用pprint(dicts(taxonomy))来输出结构
迭代
这颗树可以很欢乐的被迭代处理,同样因为只要简单的引用一个接口它就会出现
举例来说,假设我们想要解析一个新动物的列表,将他们加入我们上面的taxonomy,我们只需要调用这样一个函数
add(taxonomy,'Animalia,Chordata,Mammalia,Cetacea,Balaenopteridae,Balaenoptera,bluewhale'.split(','))
我们可以简单的实现它
defadd(t,keys): forkeyinkeys: t=t[key]
以上这篇一行python实现树形结构的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。