首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中编写比较器函数对日期进行排序

如何在python中编写比较器函数对日期进行排序
EN

Stack Overflow用户
提问于 2016-11-08 08:13:13
回答 3查看 492关注 0票数 1

我想编写一个比较器函数来对以下日期列表进行排序

代码语言:javascript
复制
timestamps = ['2011-06-2', '2011-08-05', '2011-02-04', '2010-1-14', '2010-12-13', '2010-1-12', '2010-2-11', '2010-2-07', '2010-12-02', '2011-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16']

如何做到这一点?

更新:

我有这个:timestamps.sort(key=lambda x: time.mktime(time.strptime(x,"%Y-%m-%d")))

但是我想写一个比较器函数。

EN

回答 3

Stack Overflow用户

发布于 2016-11-08 08:20:24

这可能不是这样做的方法,即使它产生了正确的结果。

代码语言:javascript
复制
timestamps.sort(key=lambda d:"%d%02d%02d"%tuple(map(int,d.split('-'))))
票数 0
EN

Stack Overflow用户

发布于 2016-11-08 08:22:41

以下是其中一种方法:

代码语言:javascript
复制
from datetime import datetime

timestamps = ['2011-06-2', '2011-08-05', '2011-02-04', '2010-1-14', '2010-12-13', '2010-1-12', '2010-2-11', '2010-2-07', '2010-12-02', '2011-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16']

converted_timestamps = [datetime.strptime(x, '%Y-%m-%d') for x in timestamps] 
sorted_timestamps = sorted(converted_timestamps)
sorted_timestamps_as_string = [datetime.strftime(date, "%Y-%m-%d") for date in sorted_timestamps]
print(sorted_timestamps_as_string)

输出:

python $

tes.py

'2010-01-12','2010-01-14','2010-02-07','2010-02-11','2010-11-16','2010-11-22','2010-11-23','2010-11-26','2010-12-02','2010-12-13','2011-02-04','2011-06-02','2011-08-05','2011-11-30‘

我发现它更具可读性。

票数 0
EN

Stack Overflow用户

发布于 2016-11-08 08:26:36

一种简单的方法来接近它。转换为datetime对象,排序,然后转换回字符串。

代码语言:javascript
复制
from datetime import datetime
def sort_dates(string_dates):
    dates = [datetime.strptime(string_date, "%Y-%m-%d") for string_date in string_dates]
    dates.sort()
    return [datetime.strftime(date, "%Y-%m-%d") for date in dates]

示例输出:

代码语言:javascript
复制
>>> print sort_dates(['2011-06-2', '2011-08-05', '2011-02-04', '2010-1-14', '2010-12-13', '2010-1-12', '2010-2-11', '2010-2-07', '2010-12-02', '2011-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16'])
['2010-01-12', '2010-01-14', '2010-02-07', '2010-02-11', '2010-11-16', '2010-11-22', '2010-11-23', '2010-11-26', '2010-12-02', '2010-12-13', '2011-02-04', '2011-06-02', '2011-08-05', '2011-11-30']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40476875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档