什么决定字典中项目的顺序(特别是在Python中,虽然这可能适用于其他语言)?例如:
>>> spam = {'what':4, 'shibby':'cream', 'party':'rock'}
>>> spam
{'party': 'rock', 'what': 4, 'shibby': 'cream'}
如果我再次呼叫垃圾邮件,则这些项目仍将按相同的顺序排列。但这个订单是如何决定的?
答案 0 :(得分:1)
根据python docs,
词典有时在其他语言中被称为“关联词典” 记忆“或”联想数组“。与索引的序列不同 通过一系列数字,字典可以通过键索引 任何不可变的类型;字符串和数字总是键。
他们是仲裁,再次来自文档:
字典的键几乎是任意值。不是的值 hashable,即包含列表,词典或其他的值 可变类型(通过值而不是按对象进行比较 身份)不得用作钥匙。用于键的数字类型服从 数字比较的正常规则:如果两个数字相等 (例如1和1.0)然后它们可以互换使用来索引 相同的词典条目。 (但请注意,自计算机存储以来 作为近似值的浮点数通常是不明智的 它们作为字典键。)
答案 1 :(得分:1)
普通字典中的顺序基于内部哈希值,因此您不应对其做出任何假设。
将collections.OrderedDict
用于您控制其订单的字典。
答案 2 :(得分:0)
因为字典键存储在哈希表中。根据{{3}}:
存储在哈希表中的条目可以有效枚举(每个条目的成本不变),但只能以某种伪随机顺序进行枚举。