有序字典和一般字典相似,只是它能够记录元素插入其中的顺序,而通常字典是会以任意的顺序迭代的。参见下面的例子:html
import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v
运行结果以下:python
-> python test7.py Regular dictionary: a A c C b B e E d D OrderedDict: a A b B c C d D e E
能够看到一般字典不是以插入顺序遍历的。函数
判断两个有序字段是否相等(==)须要考虑元素插入的顺序是否相等code
import collections print 'dict :', d1 = {} d1['a'] = 'A' d1['b'] = 'B' d1['c'] = 'C' d1['d'] = 'D' d1['e'] = 'E' d2 = {} d2['e'] = 'E' d2['d'] = 'D' d2['c'] = 'C' d2['b'] = 'B' d2['a'] = 'A' print d1 == d2 print 'OrderedDict:', d1 = collections.OrderedDict() d1['a'] = 'A' d1['b'] = 'B' d1['c'] = 'C' d1['d'] = 'D' d1['e'] = 'E' d2 = collections.OrderedDict() d2['e'] = 'E' d2['d'] = 'D' d2['c'] = 'C' d2['b'] = 'B' d2['a'] = 'A' print d1 == d2
运行结果以下:htm
-> python test7.py dict : True OrderedDict: False
而当判断一个有序字典和其它普通字典是否相等只需判断内容是否相等。get
OrderedDict
的构造器或者 update()
方法虽然接受关键字参数,但由于python的函数调用会使用无序的字典来传递参数,因此关键字参数的顺序会丢失,因此创造出来的有序字典不能保证其顺序。it