洛谷_P1104 生日_python写法

本文介绍如何在Python中使用自定义规则对包含日期和顺序编号的列表进行排序,通过my_cmp函数实现按照年月日及编号的复杂条件排序,并展示了排序过程。
摘要由CSDN通过智能技术生成

P1104 生日 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

知识点:

        还是自定义规则的排序,然后这里还有python中如何在一行中输入多种类型的数据。 

n = int(input())
data = []
num = 1
for i in range(n):
    img = list(input().split())
    s = img[0]
    y = int(img[1])
    m = int(img[2])
    d = int(img[3])
    data.append([s,y,m,d,num])
    num += 1

import functools

def my_cmp(a,b):
    if a[1]>b[1]:
        return 1
    elif a[1] == b[1]:
        if a[2]>b[2]:
            return 1
        elif a[2] == b[2]:
            if a[3] > b[3]:
                return 1
            elif a[3] == b[3]:
                if a[4]<b[4]:
                    return 1
                else:
                    return -1
            else:
                return -1
        else:
            return -1
    else:
        return -1

data.sort(key=functools.cmp_to_key(my_cmp))

for i in data:
    print(i[0])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hooray11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值