Python 有序字典简介

有序字典-OrderedDict简介

示例

有序字典和一般字典相似,只是它能够记录元素插入其中的顺序,而通常字典是会以任意的顺序迭代的。参见下面的例子: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

参考资料

相关文章
相关标签/搜索