You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按person_id和detail_info首元素合并字典列表并累加次元素的方法

字典列表按规则合并实现

需求说明

给定待处理字典列表:

[{'person_id': '10114', 'detail_info': [1286, 1]}, {'person_id': '10114', 'detail_info': [1286, 1]}, {'person_id': '10114', 'detail_info': [1286, 3]}]

需按照以下规则合并得到结果:

  • 合并维度:相同person_id且detail_info第一个元素相等的条目归为同一组
  • 合并规则:同组内对每个detail_info的第二个元素进行累加
  • 最终输出合并后的字典列表,预期结果如下:
[{'person_id': '10114', 'detail_info': [1286, 5]}]

实现代码

def merge_records(origin_list):
    # 用元组作为分组键存储累加结果
    temp = {}
    for item in origin_list:
        pid = item["person_id"]
        d1, d2 = item["detail_info"]
        key = (pid, d1)
        temp[key] = temp.get(key, 0) + d2
    # 转换为目标格式
    return [{"person_id": k[0], "detail_info": [k[1], v]} for k, v in temp.items()]

# 测试调用
input_data = [{'person_id': '10114', 'detail_info': [1286, 1]}, {'person_id': '10114', 'detail_info': [1286, 1]}, {'person_id': '10114', 'detail_info': [1286, 3]}]
print(merge_records(input_data))

代码说明

  • 首先通过字典做分组聚合,以(person_id, detail_info第一个元素)的元组作为唯一键,累加对应第二个元素的数值
  • 遍历完成后将字典的键值对转换为要求的字典结构,最终返回合并后的列表
  • 该方法时间复杂度为O(n),仅需遍历一次原列表,性能表现较好

内容的提问来源于stack exchange,提问作者Vegas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:06:00