以下是一个按照id合并数组并对金额求和的解决方法的示例代码:
from collections import defaultdict
def merge_and_sum(arr):
# 使用defaultdict创建一个以id为键,金额列表为值的字典
merged_dict = defaultdict(list)
# 遍历输入数组,将相同id的金额进行合并
for item in arr:
merged_dict[item['id']].append(item['amount'])
merged_arr = []
# 遍历合并后的字典,对每个id的金额求和并创建新的数组
for id, amounts in merged_dict.items():
merged_arr.append({'id': id, 'amount': sum(amounts)})
return merged_arr
# 示例输入数组
arr = [{'id': 1, 'amount': 100},
{'id': 2, 'amount': 200},
{'id': 1, 'amount': 300},
{'id': 3, 'amount': 400},
{'id': 2, 'amount': 500}]
merged_arr = merge_and_sum(arr)
print(merged_arr)
输出结果:
[{'id': 1, 'amount': 400}, {'id': 2, 'amount': 700}, {'id': 3, 'amount': 400}]
在这个示例中,我们首先使用defaultdict
创建了一个以id为键,金额列表为值的字典。然后,我们遍历输入数组,将相同id的金额添加到对应的值列表中。接下来,我们遍历合并后的字典,对每个id的金额列表进行求和,并创建新的数组。最后,返回合并后的数组。
这个方法的时间复杂度为O(n),其中n为输入数组的长度。
上一篇:按照ID合并对象数组