Python中的字典是否具有单个repr值?
问题内容:
在此问题中,建议在字典上调用repr是将其存储在另一个字典中的好方法。无论密钥如何排序,这都将取决于repr是否相同。是这样吗
PS。解决原始问题的最佳方法是使用Frozenset
问题答案:
不,键添加到字典的顺序可能会影响内部数据结构。当两个项目具有相同的哈希值并以相同的桶结尾时,则将它们添加到字典的顺序很重要。
>>> (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'}"