我正在遵循《艰难地学习Python》一书中的练习40。我刚刚注意到以下几点:
In [15]: stuff
Out[15]:
{1: 'Wow',
2: 'Neato',
'age': 36,
'city': 'San Francisco',
'height': 74,
'name': 'Zed'}
In [16]: print stuff
{'city': 'San Francisco', 2: 'Neato', 'name': 'Zed', 1: 'Wow', 'age': 36, 'height': 74}
为什么这两个输出中词典项的顺序不同?你知道吗
字典中元素的顺序是不可靠的,除非您使用类似
OrderedDict
的东西。它们会因为性能等原因而改变位置。Python不能保证元素以任何特定的顺序出现,因此您永远不应该依赖它。你知道吗在这里,
__repr__
和__str__
涉及不同的代码路径,所以我猜其中一个是以不同的方式看待字典。但简而言之,字典中元素的顺序是不可靠的,你应该这样对待它。你知道吗编辑:事实上,正如下面这个答案的评论中所讨论的,recent versions of Python effectively randomize the order基于运行到运行。实现依赖于
hash
函数的输出,出于安全原因,该函数是seeded with a random value。你知道吗相关问题 更多 >
编程相关推荐