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

