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
相关产品推荐
相关产品推荐

