为什么python像我这样的字典sorting?

这是我的字典

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”.join(myDict)打印出来的时候,我知道了

 name nomadic dead port realOwner secret slaves team y x population id description 

我知道一本字典是无序的,但是每次都是一样的,我不知道为什么。

真正的问题应该是“为什么不”?一个无序的字典最有可能被实现为一个哈希表 (事实上​​,Python 文档直接说明了这一点),其中元素的顺序是定义良好的,但并不明显。 您的观察结果与哈希表的规则完美匹配:显然是任意的,但不变的顺序。

内置字典types的规范放弃任何保存顺序,最好把字典看作是一组无序的key: value对…

您可能需要检查OrderedDict模块 ,该模块是带有键入顺序的有序字典的实现。

字典顺序唯一可以依靠的是,如果字典没有修改,顺序将保持不变; 例如,迭代字典两次而不修改它将导致相同的密钥序列。 然而,尽pipePython词典的顺序是确定性的,但它可能受到插入和移除顺序等因素的影响,所以相同的词典可能以不同的顺序结束:

 >>> {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})