我使用这段代码形成一个字典:
tt_data[dt] = {}
for hour in range(work_begins, work_ends, 2):
tt_data[dt][hour] = ''
if Rehearsal.objects.filter(dt__year=dt.year, dt__month=dt.month, dt__day=dt.day, dt__hour=hour).exists():
tt_data[dt][hour] = Rehearsal.objects.get(dt__year=dt.year, dt__month=dt.month,
dt__day=dt.day, dt__hour=hour)奇怪的是,当"work_begins“= 14时,这个元素会出现在dict的末尾:

任何帮助都很感激。
发布于 2015-12-20 12:54:48
谢谢,这个简单的编辑解决了这个问题:
- tt_data[dt] = {}
+ tt_data[dt] = OrderedDict()发布于 2015-12-20 12:56:07
正如几个注释中所述,tt_data[dt]是一个标准的python字典,它是无序的。(参见https://docs.python.org/3.5/tutorial/datastructures.html#dictionaries)获得更多详细信息。
因此,尽管在其他datetime示例中显示值有顺序,但这是而不是保证的。
一些人还讨论了将保持有序的外部OrderedDict (tt_data)。这只有在这样的意义上才是正确的,即它将按照它被创建的顺序来保持,而不是按照任何排序的顺序。例如,如果您添加了20/11/2015,然后添加了19/11/2015,则不会按照日期重新订购。
https://stackoverflow.com/questions/34380995
复制相似问题