第一行输入一个整数
代表学生人数。
第二行输入一个整数
代表排序方式,其中,
表示按成绩降序,
表示按成绩升序。
此后
行,第
行输入一个长度为
、由大小写字母混合构成的字符串
代表第
个学生的姓名。随后,在同一行输入一个整数
代表这个学生的成绩。
除此之外,保证输入数据中不存在重复的学生姓名。
根据输入的排序方式,按照成绩升序或降序输出所有学生的姓名和成绩。对于每一名学生,新起一行。输出学生的姓名和成绩,用空格分隔。
3 0 fang 90 yang 50 ning 70
fang 90 ning 70 yang 50
在这个样例中,
,因此按成绩降序排序。
3 1 fang 90 yang 50 ning 70
yang 50 ning 70 fang 90
在这个样例中,
,因此按成绩升序排序。
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