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

Python中按日期、姓名及员工ID合并字典列表

问题:按员工、日期整合字典数据

原始数据

data = [{"average": 2, "day": "2022-01-01", "name": "joe", "employee_id": 1},
        {"average": 3, "day": "2022-01-02", "name": "joe", "employee_id": 1},
        {"average": 9, "day": "2022-01-03", "name": "joe", "employee_id": 1},
        {"sum": 13,    "day": "2022-01-01", "name": "joe", "employee_id": 1},
        {"sum": 15,    "day": "2022-01-02", "name": "joe", "employee_id": 1},
        {"sum": 0,     "day": "2022-01-03", "name": "joe", "employee_id": 1},
        {"average": 1, "day": "2022-01-01", "name": "bob", "employee_id": 2},
        {"average": 3, "day": "2022-01-02", "name": "bob", "employee_id": 2},
        {"sum":     9, "day": "2022-01-01", "name": "bob", "employee_id": 2},
        {"sum":     8, "day": "2022-01-02", "name": "bob", "employee_id": 2}]

期望输出

output = [{"name": "joe", "employee_id": 1, "day": "2022-01-01", "average": 2, "sum": 13},
          {"name": "joe", "employee_id": 1, "day": "2022-01-02", "average": 3, "sum": 15},
          {"name": "joe", "employee_id": 1, "day": "2022-01-03", "average": 9, "sum": 0},
          {"name": "bob", "employee_id": 2, "day": "2022-01-01", "average": 1, "sum": 9},
          {"name": "bob", "employee_id": 2, "day": "2022-01-02", "average": 3, "sum": 8}]

原代码问题

你之前的代码仅用day作为字典的键,导致不同员工同一天的数据被覆盖——比如joe和bob在2022-01-01的数据会共用同一个键,后处理的条目会覆盖先处理的,最终丢失其中一个员工的信息。

解决方案

需要用name、employee_id、day三者的组合作为唯一键,这样能区分不同员工的每一天数据,确保每个条目都能被正确整合:

output = {}
for item in data:
    # 用(name, employee_id, day)的元组作为唯一标识键
    key = (item["name"], item["employee_id"], item["day"])
    if key not in output:
        output[key] = {}
    # 合并当前条目到对应字典
    output[key].update(item)

# 将字典的值转换为列表,得到最终结果
result = list(output.values())
print(result)

代码说明

  • 元组(name, employee_id, day)可以作为字典的键(因为元组是不可变类型),确保每个员工的每一天都有独立的条目;
  • update()方法会自动合并键值对:如果键已存在则覆盖值,不存在则添加新的键值对;
  • 最后将字典的values转换为列表,就是你需要的整合结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:55:21