什么决定了Python中字典中的数据顺序?

时间:2013-05-23 21:29:39

标签: python dictionary

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

>>> spam = {'what':4, 'shibby':'cream', 'party':'rock'}
>>> spam
{'party': 'rock', 'what': 4, 'shibby': 'cream'}

如果我再次呼叫垃圾邮件,则这些项目仍将按相同的顺序排列。但这个订单是如何决定的?

3 个答案:

答案 0 :(得分:1)

根据python docs

  

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

他们是仲裁,再次来自文档:

  

字典的键几乎是任意值。不是的值   hashable,即包含列表,词典或其他的值   可变类型(通过值而不是按对象进行比较   身份)不得用作钥匙。用于键的数字类型服从   数字比较的正常规则:如果两个数字相等   (例如1和1.0)然后它们可以互换使用来索引   相同的词典条目。 (但请注意,自计算机存储以来   作为近似值的浮点数通常是不明智的   它们作为字典键。)

答案 1 :(得分:1)

普通字典中的顺序基于内部哈希值,因此您不应对其做出任何假设。

collections.OrderedDict用于您控制其订单的字典。

答案 2 :(得分:0)

因为字典键存储在哈希表中。根据{{​​3}}:

  

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