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

标签 python sorting datetime lambda

我正在使用 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/

相关文章:

python - 比较数字列表相似性的算法?

python - 如何向 pandas dataframe 滚动窗口添加步骤

r - 确定向量是否有序

python - 从Python中的列表列表中提取槽

python - 如何为我控制的 DateTime 编写 sleep 函数?

python - Inotify 等待复制脚本损坏图像

python - Sympy 导数中的精确用户定义表达式

java - Collections.sort 比较方法违反了它的通用契约

powershell - Powershell-获取上个月的第一天和最后一天

php - 转换日期并从字符串日期 php 中删除时间