使用defaultdict的Python单行树。如何减少所需的参数数量?

使用defaultdict的Python单行树。如何减少所需的参数数量?,python,list,dictionary,defaultdict,autovivification,Python,List,Dictionary,Defaultdict,Autovivification,我使用的是defaultdict单行树 def tree(): return defaultdict(tree) 目前,您必须为要添加的每个节点提供单独的[] 即: 我的问题是,我怎样才能将输入展平,以便提供一个列表来实现相同的结果 即: 谢谢你的帮助 您可以简单地定义一个函数,比如insert,通过提供列表和树作为参数来创建节点 def insert(tree, List): for node in List: tree = tree[node] users =

我使用的是defaultdict单行树

def tree(): return defaultdict(tree)
目前,您必须为要添加的每个节点提供单独的
[]

即:


我的问题是,我怎样才能将输入展平,以便提供一个列表来实现相同的结果

即:


谢谢你的帮助

您可以简单地定义一个函数,比如
insert
,通过提供
列表
作为参数来创建节点

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

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

将创建一个结构作为
{'harold':{'username':{}}

如果树是一个dict,可以尝试以下方法:这肯定是我想要的功能,我将研究一下这个功能。谢谢你可以创建一个类并实现你自己的
\uuuu getitem\uuuuuuuuuuuuuuuuuuuuuuu
\uuuuuuuuu setitem\uuuuuuuuuuuuuuuuuuu
,但这超出了合理的SO问题的范围。是的,@fredtantini链接的示例确实为该方法提供了一个示例。谢谢
users = tree()
users['harold', 'username', 'hrldcpr']
users['handler', 'username', 'matthandlersux']
def insert(tree, List):
    for node in List:
        tree = tree[node]

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