Skip to main content
 首页 » 编程设计

python之如何按常见项目对元组进行分组并找到每组的平均值

2025年05月04日24cyq1162

我有一个名为 data 的元组列表:

data = [('A', 2),  
        ('B', 2), ('B', 4), ('B', 6), ('B', 8), ('B', 6), ('B', 4), ('B', 3), 
        ('C', 10), ('C', 10), ('C', 10), 
        ('D', 12), 
        ('E', 12), 
        ('F', 10), ('F', 8), ('F', 6)] 
average = [] 

我想要每个相同字母的平均值:

预期输出:

average = [('A', 2), ('B', 5), ('C', 10), ('D', 12), ('E', 12), ('F', 8)] 

请您参考如下方法:

这是一个带有默认字典的选项:

from collections import defaultdict 
avg = defaultdict(lambda :{'count': 0, 'sum': 0}) 
​ 
# calculate the sum and count for each key 
for k, v in data: 
    avg[k]['count'] += 1 
    avg[k]['sum'] += v 
 
# calculate the average 
[(k, v['sum']/v['count']) for k, v in avg.items()] 
 
#[('A', 2.0), 
# ('D', 12.0), 
# ('F', 8.0), 
# ('E', 12.0), 
# ('B', 4.714285714285714), 
# ('C', 10.0)]