我有一个名为 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)]
