如何对如下示例结构的字典数组(arrays of dictionary)执行加法运算
字典数组加法运算实现方案
这里默认你需要的是同结构下对应数值的累加操作,以下以Python为例给出两种最常用场景的实现方法:
场景1:各顶层键独立累加其下所有字典的数值
即每个顶层键(如A、B、C)单独计算内部所有字典的a、b值之和,输出结构和原结构一致。
def sum_per_top_key(data): result = {} for top_key, dict_list in data.items(): sum_a = sum(item['a'] for item in dict_list) sum_b = sum(item['b'] for item in dict_list) result[top_key] = [{'a': sum_a, 'b': sum_b}] return result
测试调用示例:如果你的原数据是给出的示例,调用后返回的结果为:
{ 'A': [{'a': 10, 'b': 20}], 'B': [{'a': 10, 'b': 20}], 'C': [{'a': 10, 'b': 20}] }
如果A对应的列表有多个字典比如[{'a':10,'b':20},{'a':5,'b':3}],返回的A对应值就是[{'a':15,'b':23}]。
场景2:所有顶层键的数值全局累加
即把所有顶层键下的所有字典的a、b值全部加总,输出总结果。
def sum_global(data): total_a = 0 total_b = 0 for dict_list in data.values(): total_a += sum(item['a'] for item in dict_list) total_b += sum(item['b'] for item in dict_list) return {'a': total_a, 'b': total_b}
测试调用示例:对给出的示例调用后返回结果为{'a': 30, 'b': 60}。
如果你的累加规则和上述两种不同,可以直接调整遍历逻辑,核心思路都是先按层级遍历到需要累加的数值字段,再执行求和操作即可。
内容的提问来源于stack exchange,提问作者Eng. Shadab NoorAli
相关产品推荐
相关产品推荐

