如何对嵌套字典列表中同键字典的元素求和
解决相同外层键的嵌套字典求和问题
实现思路
先用临时字典统计每个外层键对应嵌套字典的累加值,再将临时字典转换为目标列表格式。
代码实现
# 原列表(注意键需用字符串包裹,否则会触发变量未定义报错) original_list = [{"a": {"b":1, "c":2}}, {"d": {"b":3, "c":4}}, {"a": {"b":2, "c":3}}] # 临时字典用于汇总累加结果 temp_dict = {} for item in original_list: # 取出当前子字典的外层键和嵌套字典(题目明确每个子字典仅一个键值对) outer_key, inner_dict = next(iter(item.items())) if outer_key not in temp_dict: # 首次出现该外层键,复制内层字典初始化统计项 temp_dict[outer_key] = inner_dict.copy() else: # 已存在该外层键,遍历内层字典累加对应值 for k, v in inner_dict.items(): temp_dict[outer_key][k] += v # 转换为目标列表格式 result = [{k: v} for k, v in temp_dict.items()] print(result) # 输出: [{'a': {'b': 3, 'c': 5}}, {'d': {'b': 3, 'c': 4}}]
代码说明
next(iter(item.items())):针对每个子字典仅含一个键值对的特性,快速获取外层键与嵌套字典,比遍历更高效。- 临时字典
temp_dict:集中存储每个外层键的累加结果,避免重复遍历原列表。 - 列表推导式:将统计完成的临时字典转换成要求的列表结构,每个元素为单键字典。
内容的提问来源于stack exchange,提问作者Pat Rose
相关产品推荐
相关产品推荐

