PAT1 1028 List Sorting

题目链接
我的github

题目大意

根据所给的 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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值