【发布时间】:2014-10-21 14:09:28
【问题描述】:
我有以下未排序的字典(日期是键):
{“23-09-2014”:0,“11-10-2014”:0,“30-09-2014”:0,“26-09-2014”:0, “03-10-2014”:0,“19-10-2014”:0,“15-10-2014”:0,“22-09-2014”:0, “17-10-2014”:0,“29-09-2014”:0,“13-10-2014”:0,“16-10-2014”:0, “12-10-2014”:0,“25-09-2014”:0,“14-10-2014”:0,“08-10-2014”:0, “2014 年 2 月 10 日”:0,“2014 年 9 月 10 日”:0,“2014 年 18 月 10 日”:0,“2014 年 9 月 24 日”:0, “28-09-2014”:0,“10-10-2014”:0,“21-10-2014”:0,“20-10-2014”:0, “2014 年 6 月 10 日”:0,“2014 年 4 月 10 日”:0,“2014 年 9 月 27 日”:0,“2014 年 5 月 10 日”:0, “01-10-2014”:0,“07-10-2014”:0}
我正在尝试从最旧到最新对其进行排序。 我试过代码:
mydict = OrderedDict(sorted(mydict .items(), key=lambda t: t[0], reverse=True))
对它进行排序,它几乎起作用了。它产生了排序的字典,但它忽略了几个月:
{“01-10-2014”:0,“02-10-2014”:0,“03-10-2014”:0,“04-10-2014”:0, “2014 年 5 月 10 日”:0,“2014 年 6 月 10 日”:0,“2014 年 7 月 10 日”:0,“2014 年 8 月 10 日”:0, “2014 年 9 月 10 日”:0,“2014 年 10 月 10 日”:0,“2014 年 11 月 10 日”:0,“2014 年 12 月 10 日”:0, “13-10-2014”:0,“14-10-2014”:0,“15-10-2014”:0,“16-10-2014”:0, “17-10-2014”:0,“18-10-2014”:0,“19-10-2014”:0,“20-10-2014”:0, “21-10-2014”:0,“22-09-2014”:0,“23-09-2014”:0,“24-09-2014”:0, “25-09-2014”:0,“26-09-2014”:0,“27-09-2014”:0,“28-09-2014”:0, “29-09-2014”:0,“30-09-2014”:0}
我该如何解决这个问题?
编辑: 我需要这个来计算过去 X 天内在 django 应用程序中创建的对象,每一天。
event_chart = {}
date_list = [datetime.datetime.today() - datetime.timedelta(days=x) for x in range(0, 30)]
for date in date_list:
event_chart[formats.date_format(date, "SHORT_DATE_FORMAT")] = Event.objects.filter(project=project_name, created=date).count()
event_chart = OrderedDict(sorted(event_chart.items(), key=lambda t: t[0]))
return HttpResponse(json.dumps(event_chart))
【问题讨论】:
-
您需要将这些字符串转换为
datetime对象以使其正确排序 - 请查看 the docs。或者,如果您可以将格式更改为'yyyy-mm-dd',它们将作为字符串正确排序。 -
问题是,我已经从 datetime 对象转换了这些日期。他们每个人都应该本地化。请检查我的编辑
标签: python date python-2.7 types