这是我的词典
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
我知道字典是无序的,但每次出现都是一样的,我不知道为什么。
答案 0 :(得分:79)
对于旧版本的Python,真正的问题应该是“为什么不呢?” - 无序字典通常实现为hash table,其中元素的顺序是明确定义的但不是立即明显的({{3 }})。您的观察完全符合哈希表的规则:明显的任意,但是不变的顺序。
Python已经改变了它的dict
实现以保留插入顺序,the Python documentation used to state this。因此,实现不再构成纯哈希表(但是哈希表在其实现中仍然使用)。
答案 1 :(得分:10)
内置字典类型的specification
不承认任何保留秩序,最好将字典视为一组无序的key: value
对......
您可能需要查看OrderedDict
module,这是带有密钥插入顺序的有序字典的实现。
答案 2 :(得分:8)
您可以依赖的字典排序唯一的一点是,如果没有对字典进行修改,顺序将保持不变;例如,在不修改字典的情况下迭代字典两次将导致相同的键序列。但是,尽管Python字典的顺序是确定性的,但它可能会受到插入顺序和删除等因素的影响,因此相同的字典最终可能会有不同的顺序:
>>> {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})