为什么在dict上迭代会改变输出中的键顺序?

时间:2012-10-25 11:05:44

标签: python

  

可能重复:
  Why is python ordering my dictionary like so?

为什么迭代这个词典

d = {'tors':None,
     'head':None,
     'armr':None,
     'arml':None,
     'legl':None,     
     'legr':None}

for k in d.keys():
    print k

将以不同的顺序输出密钥:

head
legl
armr
arml
tors
legr

2 个答案:

答案 0 :(得分:6)

在python dict中实现为哈希映射,没有人不能保证密钥顺序。来自文档

  

CPython实现细节:键和值列在   非随机的任意顺序因Python而异   实现,并取决于字典的插入历史   和删除。

如果您需要继续订购,请改用collections.OrderedDict

答案 1 :(得分:1)

这应该做的工作:

import collections

ordered_d = collections.OrderedDict([('banana', 3),('apple',4),('pear', 1),('orange', 2)])
for k in ordered_d.keys():
    print k

结果:

banana
apple
pear
orange