请告诉我下面两个案例中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': {}}
答案 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] = {}