Python:使用 lambda 以 str 格式对日期时间进行排序

use*_*703 3 python sorting lambda datetime

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

编辑:忘了提及我使用的是 Python 3.4。

Mar*_*ers 5

您必须将您的值解析为键函数中的日期时间对象:

from datetime import datetime

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

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