python - 如何将三层嵌套的dict转换为三层嵌套的defaultdict?
问题描述
我已经将嵌套的默认defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
字典转换为嵌套字典。如何转换回相同的格式和数据类型?
解决方案
您可以事先创建目标 defaultdict 结构并使用递归函数复制其中的数据:
from collections import defaultdict
def copyToDefaultdict(source,target):
for k,v in source.items():
if isinstance(v,dict) and isinstance(target[k],defaultdict):
copyToDefaultdict(v,target[k])
else:
target[k] = v
输出:
target = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
source = { "a": { 10: { 'x':2, 'y':3}, 12:{ 'z':4, 'w':5} },
"b": { 20: { 'p':6, 'q':7}, 22:{ 'r':8, 's':9} } }
copyToDefaultdict(source,target)
target
defaultdict(<function <lambda> at 0x7fd9135d01e0>,
{'a': defaultdict(<function <lambda>.<locals>.<lambda> at 0x7fd914f9a510>,
{10: defaultdict(<class 'int'>, {'x': 2, 'y': 3}),
12: defaultdict(<class 'int'>, {'z': 4, 'w': 5})
}),
'b': defaultdict(<function <lambda>.<locals>.<lambda> at 0x7fd914f9a598>,
{20: defaultdict(<class 'int'>, {'p': 6, 'q': 7}),
22: defaultdict(<class 'int'>, {'r': 8, 's': 9})
})
})
推荐阅读
- ios - 从自定义视图控制器继承以使相似视图的行为多态
- mysql - SQL 获取并计算 SUM
- ansible - 使用 ansible-vault 加密私钥连接到远程主机不起作用
- javascript - 数据文件夹无法从 cloudimage-360 的 s3 存储桶加载图像
- django - 我如何为 Django 中的每个帐户提供不同的数据
- python-3.x - 添加 Firefox 扩展/附加组件的简单方法
- python - mysql 服务器在使用 pd.read_sql() 获取大量数据集时失去连接
- email - 如何从 elastialert 规则中删除 _id、_index、_type、num_matches、num_hits 和 @timestamp
- https - 无法使用python登录网站
- r - 如何创建独立的 Rmath.h 库来访问 C 中的 R 函数?