📜  Python – 多键分组求和

📅  最后修改于: 2022-05-13 01:55:17.686000             🧑  作者: Mango

Python – 多键分组求和

有时,在处理Python记录时,我们可能会遇到一个问题,即我们需要根据多个 key 相等性执行元素分组,以及对特定 key 的分组结果求和。在数据域的应用中可能会出现这种问题。让我们讨论一下可以执行此任务的特定方式。

方法:使用循环 + defaultdict() + 列表理解
上述功能的组合可以用来解决这个问题。在此,我们使用循环进行分组,并使用列表推导来完成对键求和的任务。

Python3
# Python3 code to demonstrate working of
# Multiple Keys Grouped Summation
# Using loop + defaultdict() + list comprehension
from collections import defaultdict
 
# initializing list
test_list = [(12, 'M', 'Gfg'), (23, 'H', 'Gfg'),
            (13, 'M', 'Best'), (18, 'M', 'Gfg'),
            (2, 'H', 'Gfg'), (23, 'M', 'Best')]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing grouping indices
grp_indx = [1, 2]
 
# initializing sum index
sum_idx = [0]
 
# Multiple Keys Grouped Summation
# Using loop + defaultdict() + list comprehension
temp = defaultdict(int)
for sub in test_list:
    temp[(sub[grp_indx[0]], sub[grp_indx[1]])] += sub[sum_idx[0]]
res = [key + (val, ) for key, val in temp.items()]
                 
# printing result
print("The grouped summation : " + str(res))


输出 :
原始列表是:[(12, 'M', 'Gfg'), (23, 'H', 'Gfg'), (13, 'M', 'Best'), (18, 'M', ' Gfg'), (2, 'H', 'Gfg'), (23, 'M', 'Best')]
分组求和:[('M', 'Gfg', 30), ('H', 'Gfg', 25), ('M', 'Best', 36)]