题解 | #成绩排序#

成绩排序

http://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

用成绩作为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
全部评论
还在疑问大佬为什么要给key加个序号,自己敲了一边没加序号发现测试用例丧心病狂尽然有同名得人考试,淦!字典key(唯一性)相同保留后面的value,会出错,麻了
1 回复 分享
发布于 2022-03-27 21:51
成绩做key不怕有相同成绩的吗。。。。
3 回复 分享
发布于 2022-07-25 20:27

相关推荐

评论
7
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务