我在遍历字典时遇到了问题。以下代码:
d = {}
d['a'] = 1
d['b'] = 2
d['c'] = 3
for k,v in d.iteritems():
print k,v
结果:
a 1
c 3
b 2
但期望的结果是:
a 1
b 2
c 3
有谁知道如何以某种方式修复循环以保持元素分配的顺序?谢谢!
在Python中,普通字典被设计为无序的。 意思是,它们不应该在这里使用。
相反,您应该使用collections.OrderedDict
:
>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d['a'] = 1
>>> d['b'] = 2
>>> d['c'] = 3
>>> for k,v in d.iteritems():
... print k,v
...
a 1
b 2
c 3
>>>
与普通字典不同,OrderedDict
保证保留元素的分配顺序。
字典不保留顺序,因此您需要对键进行排序:
for k,v in sorted(d.iteritems,key=lambda x: x[0]):
print k,v
或者,使用 collections.OrderedDict
对象,该对象在内部按广告顺序维护键列表:
import collections
d = collections.OrderedDict()
...
for k,v in d.iteritems():
print k,v