python dict没有按顺序显示

时间:2017-09-03 10:30:57

标签: python

请告诉我下面两个案例中python dict的区别。第一个以正确的顺序打印数据,但在第二次迭代时P6优先于P5。会是什么原因?

>>> a=["P3", "P4"]
>>> devices_by_dc = {}
>>> for b in a:
...   devices_by_dc[b] = {}
>>> print devices_by_dc
{'P3': {}, 'P4': {}}


>>> a=["P5", "P6"]
>>> devices_by_dc = {}
>>> for b in a:
...   devices_by_dc[b] = {}
{'P6': {}, 'P5': {}}

2 个答案:

答案 0 :(得分:0)

在Python中,字典不是有序的,它们是类似集合的对象。因此,打印顺序是完全随机的。

考虑dict.keys()。那是一套。所以基本上当你做

print(dict)

实际发生的是

for key in dict.keys():
    str_out = ' \'{0}\': {1},'.format(key, dict[key]
print '{{ {0} }}'.format(str_out[:-1])

由于dict.keys()是一个集合,因此选择键的顺序是随机的。

如果您想将订单引入字典,请按照问题评论中的建议,而不是dict使用collections.OrderedDict。不要忘记import collections

答案 1 :(得分:0)

默认情况下,不会对python中的字典进行排序。您可以使用OrderedDict代替。

import collections

devices_by_dc = collections.OrderedDict()
for b in a:
    devices_by_dc[b] = {}