用成绩作为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