如何按task列表取值分组计算对应hours列表元素最大值的总和
实现思路
- 按顺序配对
task和hours的同索引元素,以task的取值为分组维度,存储对应位置的hours数值 - 对每个分组的
hours数值取最大值,所有最大值相加即为最终结果
代码实现
方法1:原生Python实现(无需额外依赖)
task = [1,1,1,1,2,2,3,4,5,5] hours = [1,7,6,2,3,6,5,2,4,6] group = {} for t, h in zip(task, hours): if t not in group: group[t] = [] group[t].append(h) total = sum(max(v) for v in group.values()) print(total)
运行输出结果为 26。
方法2:使用collections.defaultdict简化写法
from collections import defaultdict task = [1,1,1,1,2,2,3,4,5,5] hours = [1,7,6,2,3,6,5,2,4,6] group = defaultdict(list) for t, h in zip(task, hours): group[t].append(h) total = sum(max(v) for v in group.values()) print(total)
方法3:pandas实现(适合大数据量场景)
import pandas as pd task = [1,1,1,1,2,2,3,4,5,5] hours = [1,7,6,2,3,6,5,2,4,6] df = pd.DataFrame({'task': task, 'hours': hours}) total = df.groupby('task')['hours'].max().sum() print(total)
内容的提问来源于stack exchange,提问作者No Uce
相关产品推荐
相关产品推荐

