在Python中,什么规定了字典中数据的顺序?

在Python中,什么规定了字典中数据的顺序?,python,dictionary,Python,Dictionary,什么决定了字典中项目的顺序(特别是在Python中,尽管这可能适用于其他语言)?例如: >>> spam = {'what':4, 'shibby':'cream', 'party':'rock'} >>> spam {'party': 'rock', 'what': 4, 'shibby': 'cream'} 如果我再次呼吁垃圾邮件,项目仍将在相同的顺序。但是这个顺序是如何决定的呢?根据python 在其他语言中,词典有时被称为“联想词典” “记忆”或“关

什么决定了字典中项目的顺序(特别是在Python中,尽管这可能适用于其他语言)?例如:

>>> spam = {'what':4, 'shibby':'cream', 'party':'rock'}
>>> spam
{'party': 'rock', 'what': 4, 'shibby': 'cream'}
如果我再次呼吁垃圾邮件,项目仍将在相同的顺序。但是这个顺序是如何决定的呢?

根据python

在其他语言中,词典有时被称为“联想词典” “记忆”或“关联数组”。与序列不同,序列是索引的 通过一系列数字,字典通过键进行索引,键可以是 任何不可变类型;字符串和数字始终可以是键

它们是任意的,同样来自文件:

字典的键几乎是任意值。不可用的值 hashable,即包含列表、字典或其他内容的值 可变类型(按值而不是按对象进行比较) 标识)不能用作密钥。用于键的数字类型 数字比较的一般规则:如果两个数字比较相等 (例如1和1.0),则可以互换使用它们来索引 相同的词典条目。(但是请注意,由于计算机存储 使用浮点数作为近似值通常是不明智的 把它们当作字典键。)


普通字典中的顺序是基于内部哈希值的,因此您不应该对此进行任何假设


对于您控制其顺序的词典,请使用集合.OrderedDict。

,因为词典键存储在哈希表中。根据:

存储在哈希表中的条目可以有效地枚举(每个条目的成本不变),但只能以某种伪随机顺序进行枚举