首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典排序的奇怪行为

字典排序的奇怪行为
EN

Stack Overflow用户
提问于 2015-12-20 12:27:26
回答 2查看 60关注 0票数 0

我使用这段代码形成一个字典:

代码语言:javascript
复制
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的末尾:

任何帮助都很感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-20 12:54:48

谢谢,这个简单的编辑解决了这个问题:

代码语言:javascript
复制
-        tt_data[dt] = {}
+        tt_data[dt] = OrderedDict()
票数 0
EN

Stack Overflow用户

发布于 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,则不会按照日期重新订购。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34380995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档