在Python中,可以使用groupby
和sum
函数来实现在不计算重复值的情况下按照分组进行求和。
首先,需要导入itertools
模块中的groupby
函数和operator
模块中的itemgetter
函数。groupby
函数用于按照指定的键对序列进行分组,itemgetter
函数用于获取指定键的值。
接下来,假设有一个包含重复值的列表data
,我们想要按照其中的某个键进行分组,并对每个分组中的值进行求和。
from itertools import groupby
from operator import itemgetter
data = [{'key': 'A', 'value': 1},
{'key': 'B', 'value': 2},
{'key': 'A', 'value': 3},
{'key': 'B', 'value': 4},
{'key': 'C', 'value': 5}]
# 按照 'key' 键进行分组
data.sort(key=itemgetter('key'))
groups = groupby(data, key=itemgetter('key'))
# 对每个分组中的值进行求和
result = [{'key': key, 'sum': sum(item['value'] for item in group)} for key, group in groups]
print(result)
输出结果为:
[{'key': 'A', 'sum': 4}, {'key': 'B', 'sum': 6}, {'key': 'C', 'sum': 5}]
在上述代码中,首先对列表data
按照键'key'
进行排序,然后使用groupby
函数按照键'key'
进行分组。接着,使用列表推导式对每个分组中的值进行求和,并将结果存储在新的列表result
中。
这样,我们就实现了在Python中不计算重复值的情况下按照groupby
和sum
进行分组求和的功能。
腾讯云相关产品和产品介绍链接地址:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云