用成绩作为key,然后按key排序输出。
我试了一下反过来,也可以,但是比较麻烦o(╥﹏╥)o 。要处理重名同学丢记录问题:
119人用例。有多个I,dt同学。如果直接用人名作为字典key,就会导致后面同学成绩覆盖前面同学成绩,从而在排名时丢失前面同学的成绩。
解决办法也很简单,字典key改为“同学名字+录入序号”,在输出时再去掉序号部分即可。
嗯嗯还是用成绩做key更直观一些。
while True:
try:
#获取成绩信息
n,o,d = int(input()),int(input()),dict()
for i in range(n):
gr = input().split(' ') #sys.stdin.readline().strip()
d.update({gr[0]+str(i).zfill(3):int(gr[1])})
#根据要求输出
if o==0:
for g in sorted(d.items(),key = lambda kv: (kv[1]),reverse=True):
print(g[0][:-3],g[1])
else:
for g in sorted(d.items(),key = lambda kv: (kv[1])):
print(g[0][:-3],g[1])
except:
break