首页 > 解决方案 > 在 Python 中创建任意深度的嵌套字典

问题描述

我想创建一个字典,我可以在嵌套字典的深处分配一个值,而无需先显式创建外层。这是我想做的事情:

d = {} # or whatever Python object works
d['a']['b']['c'] = 3

这是我到目前为止所尝试的:

如果我有一个普通的字典,我可以像这样分配一个键:

d = {}
d['a'] = 1

但不是这样:

d['a']['b'] = 2

但是,我可以使用 adefaultdict这样做:

from collections import defaultdict
dd = defaultdict(dict)
dd['a']['b'] = 2

但是,我仍然不能做一个深度嵌套的字典

from collections import defaultdict
dd = defaultdict(dict)
dd['a']['b']['c'] = 3

我知道我可以用递归函数来做到这一点,但我希望有一种简单的方法来做到这一点。在那儿?

编辑:

我也试过这个,但没有奏效:

from collections import defaultdict
dd = defaultdict(defaultdict)
dd['a']['b']['c'] = 3

标签: pythondictionary

解决方案


您可以使用它作为参考。

from collections import defaultdict
import json
def recursive_dict():
    return defaultdict(recursive_dict)

x = recursive_dict()
x['a']['b']['c']=3
print(json.dumps(x))

输出:

{"a": {"b": {"c": 3}}}

推荐阅读