Implementing for loop on a dictionary in Python
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
python looping seems to not follow sequence?
In what order does python display dictionary keys?
号
1 2 3 | d = {'x': 9, 'y': 10, 'z': 20} for key in d: print d[key] |
上面的代码每次运行时提供不同的输出。不是完全不同的输出,而是以不同的顺序输出。我用Aptana3执行了多次代码。
第一次执行给出:十九二十
第二次执行给出:二十十九
我还在一个在线的IDE http://labs.codecademy.com中执行了代码。在那里输出总是10 9 20
我只是想知道这是为什么。理想情况下,每次执行上述代码时,它都应该打印9 10 20。请解释一下。
字典是键到值的映射;它没有顺序。
你想要一个
1 2 3 4 5 | 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] |
但是请注意,字典排序是确定的——如果您对同一个字典重复两次,您将得到相同的结果。
字典是未排序的集合。所以在理论上,元素的顺序可能会随着你对它执行的每一个操作而改变。如果您希望按顺序打印密钥,则必须在打印之前对其进行排序(即收集密钥,然后对其进行排序)。