字典由连续的整数键填充,如下所示:
d = dict()
for i in range(0, 10):
d[i] = 100-i
之后,字典项会像这样迭代:
for k, v in d.items():
print k, v
结果显示项目按数字顺序迭代:
0 100
1 99
2 98
3 97
4 96
5 95
6 94
7 93
8 92
9 91
事实证明,这是我想要的行为,但不是我所期望的。我期望字典以随机顺序迭代。这是怎么回事,我可以在公开发布的代码中依赖这种行为吗?
字典不是按随机顺序排列的。他们在随意的命令。在这种情况下,你很幸运,它们被排序了。明天,他们可能就不再是这样了。如果您需要随机性,请使用random
。如果您需要排序顺序,请使用sorted()
。正如@BenjaminWohlwend 在评论中提到的,您可以使用collections.OrderedDict
跟踪插入顺序。
在这种情况下,我猜测字典正在执行某种小整数键优化,就像数组一样(例如hash(1) == 1
)。这不是一个有保证的行为,并且在其他 Python 实现上可能会有不同的工作方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)