题解 | #成绩排序#

成绩排序

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

import sys

#for line in sys.stdin:
#    a = line.split()
#   print(int(a[0]) + int(a[1]))

#接收待排序的元素的数量
n = int(input())

#接收标志位,排序的函数sort会用到,决定升序还是降序
Flag =not bool(int(input())) 

#定义字典存放姓名和成绩
dict={}

L=[]
#将姓名和成绩全部放入L中,每个元素x代表一组姓名和成绩
i=1
while i <= n:
    information=input().split()
    L.append(information)
    i+=1
#print(L)

#需要考虑的是字典key是不能重复的,但是原始数据姓名有重复的,这时可以对存入的数据做些字符串处理,改变key的值,##单需要保证能在取出的时候,使用函数回复过来

for x in L:
    if x[0] in dict.keys():
        if x[0]+"  "in dict.keys()://处理出现2次的元素
            dict[x[0]+"   "]=x[1]
        else:
            dict[x[0]+"  "]=x[1]//处理出现一次的元素
    else:    //没有重复的姓名时直接存入字典
        dict[x[0]]=x[1]

#print(dict.keys())
#print(dict)


#对字典进行排序生成排序后的列表
Ls=sorted(dict.items(),key=lambda x :int(x[1]),reverse=Flag)
#print(Ls)


#取出来,将列表中的元素输出,注意对输入的元素去掉空格,因为我们给它可能因为重复添加过空格,但是实际上原来并没##有,知识为了方便存放
for x in Ls:
    #print(x)
    i=x[0].strip()
    j=x[1]
    print(i,j)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务