我遇到了循環通過字典的問題。下面的代碼:按指定順序的Python循環字典
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循環字典
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
優秀!謝謝! – Charlie
對不起,我等了10分鐘.. – Charlie