Why is python ordering my dictionary like so?
本问题已经有最佳答案,请猛点这里访问。
这是我的字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | propertyList = { "id": "int", "name": "char(40)", "team": "int", "realOwner": "int", "x": "int", "y": "int", "description": "char(255)", "port": "bool", "secret": "bool", "dead": "bool", "nomadic": "bool", "population": "int", "slaves": "int", } |
但是当我用"n"打印出来的时候,加入(mydict)我会得到这个
1 2 3 4 5 6 7 8 9 10 11 12 13 | name nomadic dead port realOwner secret slaves team y x population id description |
号
我知道字典是无序的,但每次都是一样的,我不知道为什么。
对于旧版本的Python,真正的问题应该是"为什么不呢?""-无序字典通常被实现为散列表,其中元素的顺序定义良好,但并不立即明显(用于说明这一点的python文档)。您的观察结果完全符合哈希表的规则:明显的任意性,但顺序不变。
此后,python更改了其
内置字典类型的规范不维护秩序,最好把字典看作是一组无序的
您可能需要检查
关于字典排序,您唯一可以依赖的是,如果没有对字典进行修改,则顺序将保持不变;例如,在不修改字典的情况下对字典进行两次迭代,将导致相同的键序列。但是,尽管python字典的顺序是确定的,但它可能会受到诸如插入和删除顺序等因素的影响,因此相同的字典最终可能以不同的顺序结束:
1 2 3 4 | >>> {1: 0, 2: 0}, {2: 0, 1: 0} ({1: 0, 2: 0}, {1: 0, 2: 0}) >>> {1: 0, 9: 0}, {9: 0, 1: 0} ({1: 0, 9: 0}, {9: 0, 1: 0}) |