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