Python中如何根据key参数对二维数组对应元素进行求和聚合
Python 按指定key聚合求和的实现方案
核心思路
利用字典存储聚合结果,将作为聚合依据的前两项转为可哈希的元组作为key,对应value为累加的第三项数值,最后转换为目标格式列表即可,逻辑清晰且时间复杂度为O(n),效率很高。
实现代码
方案1:使用标准库collections.defaultdict(最简洁)
from collections import defaultdict x = [[0,"xxx",100],[1,"yyy",100],[1,"xxx",100]] agg_dict = defaultdict(int) for item in x: # 前两项转元组作为key key = tuple(item[:2]) agg_dict[key] += item[2] # 转换为目标格式列表 result = [list(k) + [v] for k, v in agg_dict.items()]
方案2:无依赖原生实现(无需导入任何模块)
x = [[0,"xxx",100],[1,"yyy",100],[1,"xxx",100]] agg_dict = {} for item in x: key = tuple(item[:2]) if key not in agg_dict: agg_dict[key] = 0 agg_dict[key] += item[2] result = [list(k) + [v] for k, v in agg_dict.items()]
补充说明
- Python 3.7及以上版本默认字典保留插入顺序,输出结果的顺序和原数组中key首次出现的顺序一致;如果使用更低版本需要保序,可以替换为
collections.OrderedDict。 - 如果你给出的示例结果中少了
[1, "xxx", 100]属于示例输入笔误,将输入的第三项改为[0,"xxx",100]即可得到你给出的示例输出。
内容的提问来源于stack exchange,提问作者DSM
相关产品推荐
相关产品推荐

