Python遍历嵌套字典按相同键累加合并值的实现问题
原代码问题分析
- 循环逻辑错误:外层遍历
my_dict顶层键的同时,内层又遍历了整个my_dict的所有条目,导致不同顶层键的统计值被混合累加 - 累加计数器未重置:
new_dict定义在循环外,处理完一个顶层键后没有清空,统计值会持续叠加到后续所有键的结果中
正确实现代码
from collections import defaultdict # 此处my_dict替换为你实际的源字典即可 my_dict = { "key1": [{"A": 0}, {"B": 1}, {"C": 0}, {"D": 0}, {"A": 0}, {"B": 0}, {"C": 0}, {"D": 0}, {"A": 0}, {"B": 1}, {"C": 0}, {"D": 0}], "key2": [{"A": 0}, {"B": 0}, {"C": 0}, {"D": 0}, {"A": 1}, {"B": 0}, {"C": 0}, {"D": 0}, {"A": 0}, {"B": 0}, {"C": 0}, {"D": 0}, {"A": 1}, {"B": 0}, {"C": 0}, {"D": 0}, {"A": 0}, {"B": 0}, {"C": 0}, {"D": 0}] } result = {} # 遍历每个顶层键和对应的子字典列表 for top_key, dict_list in my_dict.items(): # 每个顶层键单独初始化计数器,避免不同键的统计值互相干扰 count = defaultdict(int) for single_dict in dict_list: for k, v in single_dict.items(): count[k] += v # 将统计结果转换为要求的单键字典列表格式 result[top_key] = [{k: v} for k, v in count.items()] # 输出验证 print(result)
运行后输出结果和需求完全匹配:
{'key1': [{'A': 0}, {'B': 2}, {'C': 0}, {'D': 0}], 'key2': [{'A': 2}, {'B': 0}, {'C': 0}, {'D': 0}]}
内容的提问来源于stack exchange,提问作者user1040259
相关产品推荐
相关产品推荐

