为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中以格式 (string, value) 获取列表中每个元组的值的平均值

在 Python 中以格式 (string, value) 获取列表中每个元组的值的平均值

鸿蒙传说 2023-02-12 19:11:27
我有一个元组列表,例如:(A, 1), (B, 2), (C, 3), (A, 9), (B, 8).如何在不知道元组第一个元素的出现次数的情况下,获取元组第一个元素的每个值的平均值?我想要这样的东西:(A, 5), (B, 5), (C, 3).
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

使用groupby和itemgetter:


from itertools import groupby

from operator import itemgetter

from statistics import mean



s = [('A', 1), ('B', 2), ('C', 3), ('A', 9), ('B', 8)]

s2 = sorted(s, key=itemgetter(0))   # sorting the tuple based on 0th index


print([(k, int(mean(list(zip(*g))[1]))) for k, g in groupby(s2, itemgetter(0))])

输出:


[('A', 5), ('B', 5), ('C', 3)]


查看完整回答
反对 回复 2023-02-12
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

from collections import defaultdict


sample = [("A", 1), ("B", 2), ("C", 3), ("A", 9), ("B", 8)]


store_alphabet_count = defaultdict(list)


for alphabet, count in sample:

    store_alphabet_count[alphabet].append(count)


result = [

    (key, sum(value) // len(value)) for key, value in store_alphabet_count.items()

]


print(result)

输出:


[('A', 5), ('B', 5), ('C', 3)]


查看完整回答
反对 回复 2023-02-12
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号