Python 中按日期时间对列表进行排序

在 Python 中,我们有时会遇到需要按日期时间对列表进行排序的情况。例如,有一个列表 data,其中包含多个元组,每个元组由四个元素组成:
在这里插入图片描述

data = (a, b, DateTime, d)

其中,DateTime 是日期时间元素。我们希望按 DateTime 元素对列表 data 进行排序,以使最晚的日期/时间元素排在最前面。

2、解决方案

要解决这个问题,我们可以使用 sorted() 函数。sorted() 函数可以对列表进行排序,并返回一个新的已排序列表。我们可以通过指定 key 参数来指定排序的依据。对于本例,我们可以使用 lambda 函数作为 key 参数。lambda 函数可以定义一个匿名函数,该函数接收一个列表中的元素作为参数,并返回一个值。我们可以使用这个值来进行排序。

l_desc = sorted(l, key=lambda t: t[2], reverse=True)

在这个例子中,lambda 函数接收一个元组 t 作为参数,并返回元组中的第三个元素 t[2]。这意味着排序将基于元组中的日期时间元素。reverse=True 参数指定按降序排序,这意味着最晚的日期/时间元素将排在最前面。

最后,我们可以将排序后的列表赋值给一个新的变量,如 l_desc。

代码例子:

from pprint import pprint
import datetime

l = [('a', 'b', datetime.datetime.now(), 'd') for _ in xrange(10)]
pprint(l)

l_desc = sorted(l, key=lambda t: t[2], reverse=True)
pprint(l_desc)

l_asc = sorted(l_desc, key=lambda t: t[2])
pprint(l_asc)

输出结果:

[('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 349796), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350127), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350132), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350134), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350137), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350140), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350143), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350145), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350148), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350151), 'd')]

[('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350151), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350148), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350145), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350143), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350140), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350137), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350134), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350132), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350127), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 349796), 'd')]

[('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 349796), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350127), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350132), 'd'),
 ('a', 'b', datetime.datetime(2013, 12, 11, 17, 35, 0, 350134), 'd'),
 ('
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值