对于任务我需要每个人的平均分数,所以如果Dan在一行中得分为5而在另一行得到7,那么他将被显示为平均值为6.平均值是我需要订购和显示的。 因此,我必须将人们获得的最高平均分数排序到最低平均值,并在python中显示它的排序版本。我必须排序的文件之一就像这样。
鲍勃:0
鲍勃:1
简:9
德雷克:8
丹:4
乔希:1
丹:5
我如何在python上执行此操作?
答案 0 :(得分:1)
d = {}
with open('in.txt') as f:
data = f.readlines()
for x in data:
x = x.strip()
if not x:
continue
name = x.split(':')[0].strip()
score = int(x.split(':')[-1].split('/')[0].strip())
if name not in d:
d[name] = {}
d[name]['score'] = 0
d[name]['count'] = 0
d[name]['count'] += 1
d[name]['score'] = (d[name]['score'] + score) / float(d[name]['count'])
ds = sorted(d.keys(), key=lambda k: d[k]['score'], reverse=True)
for x in ds:
print('{0}: {1}'.format(x, d[x]['score']))