第一行输入一个整数
代表学生人数。
第二行输入一个整数
代表排序方式,其中,
表示按成绩降序,
表示按成绩升序。
此后
行,第
行依次输入:
一个长度为
、由大小写字母构成的字符串
代表第
个学生的姓名;
一个整数
代表这个学生的成绩。
根据输入的排序方式,按照成绩升序或降序输出所有学生的姓名和成绩。对于每一名学生,新起一行。输出学生的姓名和成绩,用空格分隔。
3 0 fang 90 yang 50 ning 70
fang 90 ning 70 yang 50
在这个样例中,
,因此按成绩降序排序。
4 1 fang 90 yang 50 ning 70 yang 70
yang 50 ning 70 yang 70 fang 90
在这个样例中,
,因此按成绩升序排序。
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-05-16 更新题面。
2. 2025-01-09 更新题面。
from collections import defaultdict
while True:
try:
population = int(input())
ori = int(input())
rank = defaultdict(list)
for i in range(population):
info = input()
info = info.split(' ')
name = info[0]
score = info[1]
rank[score].append(name)
temp = list(rank.keys())
op = map(int, temp)
re = sorted(op) if ori == 1 else sorted(op,reverse=True)
for s in re:
for k in range(len(rank[str(s)])):
print(str(rank[str(s)][k]) + ' ' + str(s))
except:
break
while True:
try:
num = int(input())
rev = int(input())
revers = True
if rev == 1:
revers = False
dic = {}
for i in range(num):
records = input().split()
dic[records[0]] = int(records[1])
sdic = dict(sorted(dic.items(), key= lambda item:item[1],
reverse = revers))
# print(sdic)
for key, value in sdic.items():
print(key, end = ' ')
print(value, end = '\n')
except:
break while True: try: aa=[]#初始化aa 列表 n = int(input())#读取个数 reorno = input()#读取升序降序 for i in range (n): a,b = input().split()#连续读取全部学生 b = int(b)#第二项转换为int用于排序 aa.append((a,b))#添加入列表以(a,b)形式 if reorno == '1': aa=sorted(aa, key=lambda x:x[1]) #以0起始第1位为key,排序 elif reorno == '0': aa=sorted(aa, key=lambda x:x[1],reverse=True)#以0起始第1位为key,排序,降序 for i in range (len(aa)): print(aa[i][0]+ " "+ str(aa[i][1]))#逐个读取结果打印 except: break
while True:
try:
num = int(input())
order = int(input())
scores = []
for i in range(num):
record = input()
scores.append(record.split(' '))
scores[i][1] = int(scores[i][1])
if order == 0:
sorted_scores = sorted(scores, key= lambda x:x[1], reverse=True)
elif order == 1:
sorted_scores = sorted(scores, key=lambda x: x[1])
for i in range(num):
print(sorted_scores[i][0], sorted_scores[i][1])
except EOFError:
break while True:
try:
n, ascending = int(input()), int(input())
marks = []
for _ in range(n):
marks.append(input().split())
temp = [0] * 101
for m in marks:
temp[int(m[1])] += 1
sum = 0
if ascending:
for i in range(101):
if temp[i]:
sum, temp[i] = sum+temp[i], sum
else:
for i in range(100, -1, -1):
if temp[i]:
sum, temp[i] = sum+temp[i], sum
new_marks = [0] * n
for m in marks:
new_marks[temp[int(m[1])]] = m
temp[int(m[1])] += 1
for m in new_marks:
print(" ".join(m))
except:
break while True:
try:
num, kind = int(input().strip()), input().strip()
L = []
for i in range(num):
name, score = input().strip().split(' ')
L.append((name, int(score)))
if kind == '0':
L = sorted(L, key=lambda x: x[1], reverse=True)
else:
L = sorted(L, key=lambda x: x[1], reverse=False)
for name_score in L:
print(name_score[0] + ' ' + str(name_score[1]))
except:
break
while True:
try:
n, order = int(input()), int(input())
message = [tuple(input().strip().split()) for i in range(n)]
if order == 0:
out = sorted(message, key=lambda x: -int(x[1]))
else:
out = sorted(message, key=lambda x: int(x[1]))
[print(' '.join(i)) for i in out]
except:
break
while True:
try:
N,a,l = eval(input()),input(),[]
for i in range(N):
l.append(input().split())
if a == '1':
l.sort(key = lambda x:eval(x[1]),reverse = False)
elif a == '0':
l.sort(key = lambda x:eval(x[1]),reverse = True)
for k in l:
print(' '.join(k))
except:
break
while 1:
try:
N, flag = int(input()), input()
mylist = []
for i in range(N):
inlist = input().split()
j = 0
for k in range(len(mylist)):
if flag == '0':
if int(inlist[1]) > int(mylist[k][1]):
j = 1
mylist.insert(k,inlist)
break
else:
if int(inlist[1]) < int(mylist[k][1]):
j = 1
mylist.insert(k,inlist)
break
if j == 0:
mylist.append(inlist)
for i in mylist:
print(' '.join(i))
except:
break
插入排序比较适合这类问题
while True:
try:
n=int(input())
flag=int(input())
dic=[]
for i in range(n):
dic.append(input().split())
if not flag:
for i in sorted(dic,key=lambda x:int(x[1]),reverse=True):
print(' '.join(i))
else:
for i in sorted(dic,key=lambda x:int(x[1])):
print(' '.join(i))
except:
break
lambda x:int(x[1])这里不加int就只能通过10%,猜测是字符串数字的问题
while True: try: num = int(input()) flag = int(input()) result = [] results = [] for i in range(num): m = input().split() name = m[0] score = int(m[1]) result.append((name,score)) if flag == 0: results = sorted(result,key=lambda x : x[1],reverse=True) elif flag == 1: results = sorted(result, key=lambda x: x[1]) for i in results: print(i[0]+' '+(str(i[1]))) except: break
占用内存:3436k
while 1:
try:
n,m = input(),input()
print("\n".join([" ".join(i) for i in sorted([input().split() for _ in range(int(n))], key=lambda x:int(x[1]), reverse=0 if m == '1' else 1)]))
except:
break # -*- coding: utf-8 -*- # !/usr/bin/python3 # 解题思路,以成绩为key把数据保存在一个字典里 # value为名字列表,按照成绩排序,使用排序后的成绩列表控制输出 while True: try: n = int(input()) o = int(input()) dic = dict() for i in range(n): name, score = input().split() if int(score) not in dic: dic[int(score)] = [name] else: dic[int(score)].append(name) ls = dic.keys() if o == 0: ls = sorted(ls, reverse=True) for i in ls: while dic[i]: print(dic[i].pop(0) + ' ' + str(i)) else: ls = sorted(ls) for i in ls: while dic[i]: print(dic[i].pop(0) + ' ' + str(i)) except: break