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

Python中整理项目工时数据时如何仅保留最终汇总结果

解决方案:汇总项目工时记录并仅输出最终结果

核心思路

先完成所有工时记录的分组聚合,仅在循环结束后一次性输出最终的汇总结构,避免在循环过程中打印中间状态。

基础实现代码

# 初始化空的汇总字典
projectHours = {}

# 遍历所有工时记录
for record in data:
    project_no = record["projectno"]
    # 提取需要的字段组成单条工时记录
    hour_entry = {"date": record["date"], "timebilled": record["timebilled"]}
    
    # 若项目号未在字典中,先创建对应空列表
    if project_no not in projectHours:
        projectHours[project_no] = []
    # 将当前记录添加到对应项目的列表中
    projectHours[project_no].append(hour_entry)

# 仅输出最终的完整汇总结果
print(projectHours)

简化优化版本(使用collections.defaultdict)

借助defaultdict可以省去判断项目号是否存在的步骤,让代码更简洁:

from collections import defaultdict

# 初始化默认值为列表的字典
projectHours = defaultdict(list)

for record in data:
    hour_entry = {"date": record["date"], "timebilled": record["timebilled"]}
    # 直接向对应项目的列表添加记录,无需提前判断
    projectHours[record["projectno"]].append(hour_entry)

# 若需要转为普通字典格式再输出,可使用dict()转换
print(dict(projectHours))

关键注意点

  • 移除循环内部所有打印中间结果的语句,只保留循环结束后的最终输出。
  • 若需要包含endtime字段,直接将其添加到hour_entry字典中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:05:21