Python One-Line Tree using defaultdict. How to reduce the number of arguments required?

点点圈 提交于 2019-12-08 04:15:52

问题


I'm using this gist's defaultdict one-line tree.

def tree(): return defaultdict(tree)

Currently, you must provide a separate [] for every node you want to add.

ie:

users = tree()
users['harold']['username']['hrldcpr']
users['handler']['username']['matthandlersux']

My question is, how would I be able to flatten the input so that I could provide a list to achieve the same result?

ie:

users = tree()
users['harold', 'username', 'hrldcpr']
users['handler', 'username', 'matthandlersux']

Thanks for any help!


回答1:


You can simply define a funcion, say insert to create the node by providing a list and tree as argument.

def insert(tree, List):
    for node in List:
        tree = tree[node]

users = tree()
insert(users, ['harold', 'username', 'hrldcpr'])

would create a structure as {'harold' : {'username' : {'hrldcp' : {} } } }



来源:https://stackoverflow.com/questions/26098355/python-one-line-tree-using-defaultdict-how-to-reduce-the-number-of-arguments-re

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!