题目大意
根据所给的 C C C来对记录排序
输入
每组包含一个测试用例, 每个用例的第一行是两个整数 N ( ≤ 1 0 5 ) N(\leq 10^5) N(≤105)和 C C C, N N N是记录的行数, C C C是需要根据的列来进行排序,之后有 N N N行,每一行都是一组记录的数据。数据包括用户ID(六位数且唯一), 姓名(长度不超过8且不含空格的字符串), 分数0到100之间的整数
输出
对每个测试用例,以 N N N行输出结果。
- C = 1 C=1 C=1 ,记录的数据按照用户的ID升序排序
- C = 2 C=2 C=2,就按照用户的姓名非递减排序
- C = 3 C=3 C=3,按照用户的分数非递减排序
如果用户的姓名或者分数一样, 就按照用户的ID升序排序
样例输入
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
样例输出
000001 Zoe 60
000007 James 85
000010 Amy 90
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90
解析
这题用python如果姿势不正确就很容易超时。。。
def solve():
n, c = map(int, input().split())
ans = list()
for i in range(n):
tot = input()
ans.append(tot)
if c == 1:
ans = sorted(ans)
elif c == 2:
ans = sorted(ans, key=lambda x: (x[7:-3], x[:6]))
elif c == 3:
ans = sorted(ans, key=lambda x: (x[-2:], x[:6]))
for i in ans:
print(i)
if __name__ == "__main__":
solve()