Python:使用lambda以str格式对datetime进行排序

时间:2014-06-11 17:16:11

标签: python sorting datetime lambda

我正在使用sorted(response, key=lambda k: k['createDate'], reverse=False)来获取排在列表前面的最新列表成员。问题是我的日期时间是字符串格式%Y-%m-%d %I:%M:%S %p。如果我这样做,它将通过字符串比较排序,而不是日期时间比较。我该如何解决这个问题?

编辑:忘记提及我在Python 3.4中使用。

2 个答案:

答案 0 :(得分:3)

您必须在键功能中将值解析为datetime对象:

from datetime import datetime

sorted(response,
       key=lambda k: datetime.strptime(k['createDate'], '%Y-%m-%d %I:%M:%S %p'),
       reverse=False)

如果您的日期格式略有不同,您可以使用直字符串排序; ISO8601日期(格式为'%Y-%m-%d %H:%M:%S')按字典顺序排序。

答案 1 :(得分:2)

只需在你的关键功能中解析结果,这样的事情应该这样做:

import datetime
def parse_timestamp_from_response(response):
    return datetime.datetime.strptime(response['createDate'], '%Y-%m-%d %I:%M:%S %p')

sorted(response, key=parse_timestamp_from_response, reverse=False)