如何解决在 Python 中创建任意深度的嵌套字典
我想创建一个字典,我可以在其中分配嵌套字典内部多个层的值,而无需先显式创建外层。这是我希望能够做的:
d = {} # or whatever Python object works
d['a']['b']['c'] = 3
这是我迄今为止尝试过的:
d = {}
d['a'] = 1
但不是这样:
d['a']['b'] = 2
但是,我可以像这样使用 defaultdict
来做到这一点:
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
解决方法
您可以将其用作参考。
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}}}
,
您似乎想使用项目列表作为字典的键。 你为什么不试试元组?不能使用列表作为字典的键。
d = dict()
d[('a')] = 1
print(d[('a')])
d[('a')] = 11
print(d[('a')])
d[('a','b')] = 2
print(d[('a','b')])
d[('a','b')] = 21
print(d[('a','b')])
d[('a','b','c')] = 3
print(d[('a','c')])
d[('a','c')] = 31
print(d[('a','c')])
d[('a','d')] = 32
print(d[('a','d')])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。