python - 在 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
解决方案
您可以使用它作为参考。
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}}}
推荐阅读
- lua - luasec 在 5.1 和 5.2 中失败,但在 5.3 中正常
- android - 如何更改 viewpager 中每个片段的点指示器(活动和非活动)的颜色?
- c - 将 C while 循环转换为 Pascal
- python - Google Dataflow 和 Apache Beam:为什么选择 ValueProvider
- c++ - 在添加 VEH 之前放置页面保护时出现“未实现”错误
- python - 在python中使用beautifulsoup提取表数据时出现问题
- python-3.x - Python3 - Openpyxl - For 循环搜索列 - 根据第一个单元格位置的位置收集信息
- java - 如何修复 Play 项目中的速率限制器模块实例化错误
- flutter - AnimationBuilder with FutureBuilder - 如何在未来返回和构建后执行动画?
- optimization - 需要指导 | 优化挑战。很想得到一些投入