我在python中查看以下trie实现:
tree = {}
def add_to_tree(root, value_string):
for character in value_string:
root = root.setdefault(character, {})
def main():
tree={}
add_to_tree(tree, 'abc')
print tree
if __name__=="__main__":
main()
我不清楚的是:
为什么它会返回{a:{b:{c:{}}}}
而不是{a:{},b:{},c:{}}
?
我通过this运行代码,可以对其进行可视化。通过“a”迭代后,我得到tree = {'a':{}}, root = {}
,然后在'b'之后得到tree = {a:{b:{}}}, root={}
。什么不清楚是什么变量保留了对{b:{}}
的引用,该引用被分配给{a:{}}
以将其更改为{a:{b:{}}}
?
答案 0 :(得分:0)
您正在为每个角色重新分配新创建的dict,请更改此行:
root = root.setdefault(character, {})
成为:
root.setdefault(character, {})
这给出了所需的输出(注意dict是无序的):
{'a': {}, 'c': {}, 'b': {}}