2017-09-03 114 views
0

請問下面兩種情況下,python字典的區別是什麼?首先按正確的順序打印數據,但第二次迭代P6優先於P5。原因是什麼?python字典不按順序顯示

>>> 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': {}} 
+1

請參閱OrderedDict in collections模塊 – Transhuman

回答

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()是一組,選擇鍵的順序是隨機的。

如果您想將訂單介紹到字典中,則請使用collections.OrderedDict而不是,如問題的評論中所示。不要忘記import collections

0

python中的字典默認沒有排序。您可以改用OrderedDict

import collections 

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