我正在使用 sorted(response, key=lambda k: k['createDate'], reverse=False)
将最新的列表成员排序到列表的前面。问题是我的日期时间是字符串格式 %Y-%m-%d %I:%M:%S %p
。如果我这样做,它将通过字符串比较而不是日期时间比较来排序。我该如何解决这个问题?
编辑:忘了说我使用的是 Python 3.4。
最佳答案
您必须在关键函数中将您的值解析为日期时间对象:
from datetime import datetime
sorted(
response,
key=lambda k: datetime.strptime(k['createDate'], '%Y-%m-%d %I:%M:%S %p'),
reverse=True,
)
如果您的日期格式略有不同,您可以使用直接字符串排序; ISO8601 日期(格式为 '%Y-%m-%d %H:%M:%S'
)可按字典顺序排序。
我还更改了排序顺序;您想要颠倒顺序,最近的 datetime
值将高于它之前的值:
>>> datetime(2014, 6, 11, 17, 16, 10) > datetime(2008, 9, 15, 12, 00, 00)
True
因此,如果您不反转排序,最新的值将被排序为最后的元素。
关于Python:使用 lambda 以 str 格式对日期时间进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24168812/