题目
思路:
利用字典存储各单位成绩参考人数的信息,key为单位名称,value为[总分,参考人数]组成的list
需要注意的地方,总分为加权之后的和的整数部分,不是每一个分数的整数部分
输出排序的方法为:
先对字典按照名称输出先后排序
在对字典根据参考人数从小到大排序
再对字典按照总分大小从高到低排序即可
代码
stu_num=int(input())
school_score_num={}
count=0
for i in range(stu_num):
id,score,school=input().split()
if id[0]=='B':
score=int(score)/1.5
elif id[0]=='T':
score = int(score) * 1.5
else:
score = int(score)
lower_school=school.lower()
if lower_school not in school_score_num:
count = count+1
school_score_num[lower_school]=[score,1]
else:
school_score_num[lower_school][0] += score
school_score_num[lower_school][1] += 1
print(count)
for tmp in school_score_num:
school_score_num[tmp][0]=int(school_score_num[tmp][0])
school_score_num=sorted(school_score_num.items(), key=lambda x:x[0],reverse=False)
school_score_num=sorted(school_score_num, key=lambda x:x[1][1],reverse=False)
school_score_num=sorted(school_score_num, key=lambda x:x[1][0],reverse=True)
before_score=school_score_num[0][1][0]
print(f'{1} {school_score_num[0][0]} {school_score_num[0][1][0]} {school_score_num[0][1][1]}')
before_rank=1
for i in range(1,count):
if school_score_num[i][1][0]==before_score:
print(f'{before_rank} {school_score_num[i][0]} {school_score_num[i][1][0]} {school_score_num[i][1][1]}')
else:
print(f'{i+1} {school_score_num[i][0]} {school_score_num[i][1][0]} {school_score_num[i][1][1]}')
before_rank=i+1
before_score=school_score_num[i][1][0]