我使用此代码来形成字典:
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的结尾:
任何帮助表示感谢。
答案 0 :(得分:0)
谢谢,这个简单的编辑解决了这个问题:
- tt_data[dt] = {}
+ tt_data[dt] = OrderedDict()
答案 1 :(得分:-1)
正如一些评论中所述,tt_data[dt]
是一个标准的python字典,它是无序的。 (有关详细信息,请参阅https://docs.python.org/3.5/tutorial/datastructures.html#dictionaries)。
因此,虽然在其他日期时间示例中看起来存在值的顺序,但不保证。
有些人还讨论了将按顺序保存的外部OrderedDict(tt_data
)。这只是因为它将按照创建的顺序保存,而不是以任何排序顺序保存。 例如,如果您添加20/11/2015然后添加19/11/2015,它将不会根据日期重新排序。