zhangsan 98
lisi 25
wangwu 34
zhangsan 76
zhangsan 36
zhangsan 54
lisi 68
zhangsan 66
lisi 25
zhangsan 83
lisi 99
wangwu 76
zhuliu 87
需求的把每个人的多次成绩取平均值,并输出有几次成绩
按成绩从高到低输出
结果类似这样
[‘zhangsan’, 68.83333333333333, 6]
[‘wangwu’, 55.0, 2]
[‘lisi’, 54.25, 4]
[‘zhuliu’, 8.0, 1]
def qsort(L):
if len(L) <= 1: return L
return qsort([lt for lt in L[1:] if lt[1] > L[0][1]]) + [L[0]] + qsort([ge for ge in L[1:] if ge[1] <= L[0][1]])
def xxx(fp):
reads = fp.readlines()
fp.close()
for mm in range(1):
all = {}
for i in range(len(reads)):
old = reads[i][:-1].split()
if old[0] not in all.keys() :
all[old[0]] = old[1:]+[1]
else:
all[old[0]] = [(int(all[old[0]][0])+int(old[1])),all[old[0]][1]+1]
end = []
for i,j in all.items():
j = [int(j[0])/j[1],j[1]]
all[i]=j
end.append([i]+j)
e_end = qsort(end)
for i in e_end:
print i
pass
t1 = time.time()
xxx( fp = open('/Users/zijiawang/Downloads/test', 'r'))
t2 = time.time()
print ''
print t2-t1
冒泡法 和 快排,130万行数据都需要3.5秒左右。 看来优化还得从结构上优化。