描述
给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。
注:0代表从高到低,1代表从低到高
数据范围:人数:1\le n \le 200\1≤n≤200
进阶:时间复杂度:O(nlogn)\O(nlogn) ,空间复杂度:O(n)\O(n)
输入描述:第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开
输出描述:按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
输入:
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
# 1/num-input,sor-input,whiletrue-for循环-dict
# 2/for循环记录index索引
# 3/函数参数sor,dict,listsortedkey-lambda-x1-reverse
def exam1(sor,lis):
s = sor
name_score = []
for i in lis:
name = i.split(' ')[0]
score = int(i.split(' ')[1])
# vkg 3
# oeipw 26
# 如这儿没将str转为int,则会出现排序错误,因为str排序,而不是int排序
# str排序则是一位一位排序,3大于2,所以vkg在前面
# 转int则将分数重新排列
name_score.append((name,score))
# print(name_score)
# [('fang', '90'), ('yang', '50'), ('ning', '70')]
# idx = name_score.index
if s == 1:
res = sorted(name_score,reverse=False,key=lambda x:x[1])
if s == 0:
res = sorted(name_score,reverse=True,key=lambda x:x[1])
# print(res)
# [('fang', '90'), ('ning', '70'), ('yang', '50')]
for i in res:
print(i[0],i[1])
def exam2(sor,lis):
s = sor
name_score = {}
for i in lis:
name = i.split(' ')[0]
score = int(i.split(' ')[1])
# b 44 b 10 出现这2种数据 字典方式会覆盖掉值 导致错误问题
name_score[name] = score
# print(name_score)
# {'abjmiicayn': 66, 'os': 25, 'piarvmduva': 89, 'kfgse': 42, 'kmkxgbau': 74, 'smhqrr': 87, 'woecwidhbq': 55, 'pijh': 60, 'ublapudwr': 76, 'l': 50, 'vkg': 3, 'hf': 66, 'oeipw': 26, 'jrzbwo': 50, 'gkz': 76}
if s == 1:
res = sorted(name_score.items(),reverse=False,key=lambda x:x[1])
if s == 0:
res = sorted(name_score.items(),reverse=True,key=lambda x:x[1])
print(res)
# [('piarvmduva', 89), ('smhqrr', 87), ('ublapudwr', 76), ('gkz', 76), ('kmkxgbau', 74), ('abjmiicayn', 66), ('hf', 66), ('pijh', 60), ('woecwidhbq', 55), ('l', 50), ('jrzbwo', 50), ('kfgse', 42), ('oeipw', 26), ('os', 25), ('vkg', 3)]
for i in res:
print(i[0],i[1])
# list(map(int(input().strip().split(' ')))
num = int(input().strip())
sor = int(input().strip())
lis = []
for i in range(num):
lis.append(input().strip())
# print(lis)
# ['fang 90', 'yang 50', 'ning 70']
exam1(sor=sor,lis=lis)
# print(('ning', '70')[1])
# 70
# 15
# 0
# abjmiicayn 66
# os 25
# piarvmduva 89
# kfgse 42
# kmkxgbau 74
# smhqrr 87
# woecwidhbq 55
# pijh 60
# ublapudwr 76
# l 50
# vkg 3
# hf 66
# oeipw 26
# jrzbwo 50
# gkz 76
# piarvmduva 89
# smhqrr 87
# ublapudwr 76
# gkz 76
# kmkxgbau 74
# abjmiicayn 66
# hf 66
# pijh 60
# woecwidhbq 55
# l 50
# jrzbwo 50
# kfgse 42
# oeipw 26
# os 25
# vkg 3