设置迭代顺序因运行而异
为什么Python集合(具有相同内容)的迭代顺序会在每次运行之间变化,我有什么选择使其在每次运行之间保持一致?
我了解Python集合的迭代顺序是任意的。如果我将“ a”,“ b”和“ c”放入集合中,然后对其进行迭代,则它们可能会以任何顺序返回。
我观察到的是,该顺序在程序运行中保持不变。也就是说,如果我的程序连续两次对同一集合进行迭代,那么两次都将得到相同的顺序。但是,如果我连续两次运行该程序,则顺序会在运行之间变化。
不幸的是,这破坏了我的一项自动测试,该测试只是比较程序两次运行的输出。我不在乎实际的顺序,但我希望每次运行都保持一致。
我想出的最好的解决方案是:
- 将集合复制到列表。
- 将任意排序应用于列表。
- 迭代列表而不是集合。
有没有更简单的解决方案?
注意:我在StackOverlow上发现了类似的问题,但是没有一个问题解决了从运行到运行获得相同结果的特定问题。