可能重复:
python looping seems to not follow sequence?
In what order does python display dictionary keys?
d = {'x': 9, 'y': 10, 'z': 20}
for key in d:
print d[key]
上面的代码每次运行时都会给出不同的输出。输出不完全不同,但输出顺序不同。我使用Aptana 3多次执行代码。
首次执行: 10 9 20
第二次执行: 20 10 9
我还在在线IDE http://labs.codecademy.com中执行了代码。那里的输出总是10 9 20
我只是想知道为什么会这样。理想情况下,每次执行上述代码时都应打印9 10 20。请解释。
答案 0 :(得分:3)
字典是键到值的映射;它没有订单。
您需要collections.OrderedDict
:
collections.OrderedDict([('x', 9), ('y', 10), ('z', 20)])
Out[175]: OrderedDict([('x', 9), ('y', 10), ('z', 20)])
for key in Out[175]:
print Out[175][key]
但请注意,字典排序是确定性的 - 如果您对同一字典进行两次迭代,则会得到相同的结果。
答案 1 :(得分:1)
字典是未订购的集合。因此理论上,元素的顺序可能会随着您在其上执行的每个操作而改变。如果您希望按顺序打印按键,则必须在打印前对它们进行排序(即收集按键然后对它们进行排序)。