我的字典中有一个日期字段Mon Apr 25 13:32:00 PDT 2013
我想按日期字段排序我的项目列表。
dictionarylist.sort(key=operator(fieldposition)
无效。有什么帮助吗?
我想保留时间字段吗?
示例数据(来自评论):
{
'11163722404385': [
('#3', 'Biology', 'A', 'Mon Apr 22 13:32:00 PDT 2013'),
('#3', '2089','Irdu', 'B', 'Wed Apr 10 15:31:00 PDT 2013')
],
'1116372240485': [
('#3', '2089','Biology', 'C', 'Mon Apr 25 13:32:00 PDT 2013'),
('#3', '2089', 'Math', 'A', 'Mon Apr 22 13:31:14 PDT 2013'),
('#3', '2089', 'Literature','C','Mon Apr 22 13:31:00 PDT 2013')
]
}
答案 0 :(得分:2)
您应首先将日期字符串转换为python datetime
对象,有关将字符串转换为datetime
对象的信息,请参阅datetime.strptime
。
要记住的一件事是,您将遇到时区问题(除非您将其转换为GMT偏移)。作为解决方法,我建议使用dateutil
模块而不是datetime
。优点是dateutil
更易于使用,仍然会返回datetime
个对象。
from dateutil import parser
dst_string = 'Mon Apr 25 13:32:00 PDT 2013'
date_obj = parser.parse(dst_str)
print date_obj
>>> datetime.datetime(2013, 4, 25, 13, 32)
然后,您可以对datetime
个对象的日期进行排序。
sorted(d['11163722404385'], key=lambda x: x[-1].date())
编辑:正如@Mark Ransom所指出的,时区可能特别棘手。通常,您必须自己处理缩写(PDT,EST,...),因为时区命名没有很好地定义。您可以使用dateutil
here了解有关处理缩写时区的更多信息。
答案 1 :(得分:1)