在python中按组获取平均值

2024-03-29 04:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

输入如下:

G1: 12
G2: 15
G1: 9
G3: 18
G2: 17
G3: 6
G1: 20

输出应为各组的平均值,如G1:12+9+20/3=13.67, G2:15+17/2=16,G3:6+18/2=12


Tags: 平均值g1g2g3
2条回答

您可以将输入保存到.txt文件,然后可以尝试以下操作:

First method : with collections.defaultdict

import collections
track=collections.defaultdict(list)
with open('file.txt','r') as f:
    for line in f:
        key,value=line.split(':')
        track[key].append(int(value))


print(list(map(lambda x:(x,sum(track[x])/len(track[x])),track.keys())))

输出:

[('G3', 12.0), ('G1', 13.666666666666666), ('G2', 16.0)]

Second method : pure logic without any external module

track={}
with open('file.txt','r') as f:
    for line in f:
        key,value=line.split(':')
        if key not in track:
            track[key]=[int(value)]
        else:
            track[key].append(int(value))

print(list(map(lambda x:(x,sum(track[x])/len(track[x])),track.keys())))

输出:

[('G1', 13.666666666666666), ('G2', 16.0), ('G3', 12.0)]

为组创建list词典:

groups = [{'G1': 12},
          {'G2': 15},
          {'G1': 9},
          {'G3': 18},
          {'G2': 17},
          {'G3': 6},
          {'G1': 20}]    

将价值观融入团队:

result = dict()

for d in groups:
    for k, v in d.items():
        if k in result:
            result[k].append(v)
        else:
            result[k] = [v]

按组计算平均值:

averages = []

for d in result:
    averages.append((d, sum(result[d]) / len(result[d])))

print(averages)

[('G1', 13.666666666666666), ('G2', 16.0), ('G3', 12.0)]
>>> 

相关问题 更多 >