【发布时间】:2022-01-15 11:49:47
【问题描述】:
我有一个嵌套字典列表 (python 3.9),看起来像这样:
records = [
{'Total:': {'Owner:': {'Available:': {'15 to 34 years': 1242}}}},
{'Total:': {'Owner:': {'Available:': {'35 to 64 years': 5699}}}},
{'Total:': {'Owner:': {'Available:': {'65 years and over': 2098}}}},
{'Total:': {'Owner:': {'No Service:': {'15 to 34 years': 43}}}},
{'Total:': {'Owner:': {'No Service:': {'35 to 64 years': 64}}}},
{'Total:': {'Owner:': {'No Service:': {'65 years and over': 5}}}},
{'Total:': {'Renter:': {'Available:': {'15 to 34 years': 1403}}}},
{'Total:': {'Renter:': {'Available:': {'35 to 64 years': 2059}}}},
{'Total:': {'Renter:': {'Available:': {'65 years and over': 395}}}},
{'Total:': {'Renter:': {'No Service:': {'15 to 34 years': 16}}}},
{'Total:': {'Renter:': {'No Service:': {'35 to 64 years': 24}}}},
{'Total:': {'Renter:': {'No Service:': {'65 years and over': 0}}}},
]
嵌套的级别并不总是一致的。上面的示例有 4 个级别(总计、所有者/租用者、可用/无服务、年龄组),但有些示例只有一个级别,而其他示例则多达 5 个。
我想以一种不会像 update() 或 {*dict_a, **dict_b} 那样替换最终字典的方式合并数据。
最终的输出应该是这样的:
combined = {
'Total': {
'Owner': {
'Available': {
'15 to 34 years': 1242,
'35 to 64 years': 5699,
'65 years and over': 2098
},
'No Service:': {
'15 to 34 years': 43,
'35 to 64 years': 64,
'65 years and over': 5
}
},
'Renter': {
'Available': {
'15 to 34 years': 1403,
'35 to 64 years': 2059,
'65 years and over': 395
},
'No Service:': {
'15 to 34 years': 16,
'35 to 64 years': 24,
'65 years and over': 0
}
},
}
}
【问题讨论】:
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
@Barmar 我将我的实际代码总结为一个非常简单的问题,并得到了预期的结果。我陈述了字典合并的两个最常见的答案以及我尝试它们时的结果。该帖子立即收到了一个答案,我现在可以解压缩,通过示例学习并应用到我的实际代码中。没有必要仅仅因为你看不到研究和总结成一个最小的、完整的和可重现的问题的工作量。
-
你在哪里描述了你的实际代码?你只是描述了你想要的结果,你没有展示或描述你写的任何东西。
标签: python python-3.x dictionary merge