2

可能重复:
python 循环似乎不遵循顺序?
python以什么顺序显示字典键?

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 。请解释。

4

2 回答 2

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]

但是请注意,字典排序确定性的——如果您对同一个字典进行两次迭代,您将得到相同的结果。

于 2013-01-31T12:52:15.550 回答
1

字典是无序的集合。因此,理论上元素的顺序可能会随着您对其执行的每个操作而改变。如果您希望按顺序打印密钥,则必须在打印之前对其进行排序(即收集密钥然后对其进行排序)。

于 2013-01-31T12:50:55.480 回答