我是python的新手...请帮我解决以下问题
我有* .txt格式的数据为4列name|items| a1| a2|
,这里我只对第3和第4列感兴趣。 Items列就像一个集[1,1]
,[12,12,2]
等,我需要打开文本文件,读取文件并将所有相似的项目列在一个数组中,找到该数组的最大值,然后取所有用类似项目组成的数组的平均值。最后,我将得到1个值,它是数组中单个最大值的平均值。
例如,items [1,1]= [55,66]
最重要的项[1,1]
为66
项目[12, 12]
= [56 89 88]
最重要的项[12, 12,2]
为89
项目[23 23 23]
= [45, 33, 33.5]
最重要的项[23 23 23]
为45
平均值=项目的最大值([1,1]+[12, 12]+........+[23 23 23]
)=(66+89+...+45/ n
)= x
其中n是类似项目的总数:例如,这里是6。
名称项目a1 a2
sty1 1 12 55
sty1 1 2 66 sty1 12 5 56 sty1 12 12 89 sty1 12 2 88 sty1 2 5 78 sty1 31 5 45 sty1 31 1 45 sty1 31 3 45 sty1 31 8 45 sty1 4 23 45 sty1 4 12 45 sty1 23 31 45
sty1 23 1 33 sty1 23 2 33.5
答案 0 :(得分:1)
以下是您可能会发现有用的Python教程中的一些部分:
答案 1 :(得分:0)
f = open("...")
d = {}
for line in f:
x = line.split()
if len(x) == 4: #skip empty lines
k = x[1]
v = float(x[3])
if not k in d: d[k] = v
elif v > d[k]: d[k] = v #because we only need max of values
f.close()
sm = sum(d.values())
print d
print sm
print sm / len(d)
>>>
{'12': 89.0, '23': 45.0, '31': 45.0, '1': 66.0, '2': 78.0, '4': 45.0}
368.0
61.3333333333