题解 | #成绩排序#
成绩排序
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)