您好我一直在尝试输出.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()))
答案 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])))