如何从.txt文件输出平均值?

时间:2015-09-23 18:40:59

标签: python file text average

您好我一直在尝试输出.txt文件的内容。 我需要做的是找到每个工作人员所做的小时数的平均值,并将其输出到屏幕上。我已经处理了一些代码,但我的.txt文件包含 str和integer:

Bobby:8
Sam:6
Kerry:4

我已经启动了一些代码,但可以让它工作。我的尝试:

elif viewwork==('week 1 hrs'):
    averageHours=[]
with open('week 1 hrs.txt') as f:
   for line in f:
       if line.strip():
          averageHours.append(int(line.strip()))

2 个答案:

答案 0 :(得分:0)

collections.defaultdict对您的问题很有用。

这里hours是一个字典(defaultdict),其中键是名称,值是整数列表(小时数)。我们首先从文件中读取行并将小时数附加到字典中。然后,我们遍历字典中的键(hours)并计算每个名称的平均值。

代码:

from collections import defaultdict
import numpy as np

hours = defaultdict(list)

with open('a.txt') as f:
   for line in f:
      stripped = line.strip()
      if stripped:
         parts = stripped.split(':')
         hours[parts[0]].append( int(parts[1]) )

for key in hours:
    print( '{},{}'.format(key, np.mean(hours[key])) )

输入:

Bobby:8
Sam:6
Kerry:4
Bobby:10
Kerry:8

输出:

Kerry,6.0
Sam,6.0
Bobby,9.0

答案 1 :(得分:0)

我认为你正在寻找工人的平均水平。也就是说,取每行末尾所有数字的平均值。

hours = [line.split(':')[1] for line in open('week 1 hrs.txt')]
average = sum(hours) / len(hours)

相反,如果你想要每个工人的平均时间:

from collections import defaultdict
hours = defaultdict(int)
for line in open('week 1 hrs.txt'):
    name, hour = line.split(':')
    hours[name] += hour
for name in hours:
    print('Average for {} is {}'.format(name, hours[name]/len(hours[name])))