python中变量和打印变量输出之间的差异

2024-06-16 12:16:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在遵循《艰难地学习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}

为什么这两个输出中词典项的顺序不同?你知道吗


Tags: nameincityage顺序out词典print
1条回答
网友
1楼 · 发布于 2024-06-16 12:16:54

字典中元素的顺序是不可靠的,除非您使用类似OrderedDict的东西。它们会因为性能等原因而改变位置。Python不能保证元素以任何特定的顺序出现,因此您永远不应该依赖它。你知道吗

在这里,__repr____str__涉及不同的代码路径,所以我猜其中一个是以不同的方式看待字典。但简而言之,字典中元素的顺序是不可靠的,你应该这样对待它。你知道吗

编辑:事实上,正如下面这个答案的评论中所讨论的,recent versions of Python effectively randomize the order基于运行到运行。实现依赖于hash函数的输出,出于安全原因,该函数是seeded with a random value。你知道吗

相关问题 更多 >