Python中的词典只有一个repr值吗?

Cas*_*ash 2 python

在这个问题中,有人建议在字典上调用repr是将它存储在另一个字典中的好方法.无论按键的排序方式如何,这都取决于repr是否相同.是这样的吗?

PS.对原始问题最优雅的解决方案实际上是使用freezeset

Joh*_*ica 7

不,键添加到字典的顺序可能会影响内部数据结构.当两个项目具有相同的哈希值并最终在同一个存储桶中时,它们添加到字典中的顺序很重要.

>>> (1).__hash__()
1
>>> (1 << 32).__hash__()
1
>>> repr({1: 'one', 1 << 32: 'not one'})
"{1: 'one', 4294967296L: 'not one'}"
>>> repr({1 << 32: 'not one', 1: 'one'})
"{4294967296L: 'not one', 1: 'one'}"
Run Code Online (Sandbox Code Playgroud)