如何移除元组列表中首元素重复项并求和对应第二个元素
解决方案
我们可以利用字典来聚合相同任务的耗时(因数据已按日期分组,无需额外处理日期维度),具体实现步骤如下:
代码实现
def merge_task_hours(daily_tasks): task_summary = {} # 遍历每日任务,累加相同任务的耗时 for task_name, hours_str, date in daily_tasks: hours = int(hours_str) if task_name in task_summary: task_summary[task_name] += hours else: task_summary[task_name] = hours # 将字典转换回要求的元组列表格式 return [(name, str(total_hours), date) for name, total_hours in task_summary.items()] # 测试用输入 input_tasks = [ ('Add features to app', '5', '2022-10-28'), ('Add features to app', '3', '2022-10-28'), ('Deploy app to GitHub', '10', '2022-10-28'), ('Deploy app to GitHub', '2', '2022-10-28'), ('Create an app, which gets tasks entries using API', '7', '2022-10-28') ] # 输出合并后的结果 print(merge_task_hours(input_tasks))
逻辑说明
- 遍历输入的任务列表,将耗时字符串转为整数,避免字符串拼接错误
- 用字典的键唯一标识任务名,值存储该任务的累计耗时
- 最后将字典转换回元组列表,把累计耗时转回字符串格式,日期沿用原分组日期
运行结果
执行代码后会输出目标格式的列表:
[('Add features to app', '8', '2022-10-28'), ('Deploy app to GitHub', '12', '2022-10-28'), ('Create an app, which gets tasks entries using API', '7', '2022-10-28')]
内容的提问来源于stack exchange,提问作者Neruay
相关产品推荐
相关产品推荐

