python collections.OrderedDict顺序字典

介绍

python 的dict实现 key:value 方式的存储,但没有顺序。

OrderedDict 实现了对字典中元素的排序

例子

import collections


d=collections.OrderedDict()
d['a']='A'
d['b']='B'
d['c']='C'
for k,v in d.items():
    print(k,v)

执行结果:

a A
b B
c C

注意

由于 OrderedDict 进行了排序,所以 元素相同、但顺序不同的两个 OrderedDict 对象,Python会认为两个不同的对象

d1=collections.OrderedDict()
d1['a']='A'
d1['b']='B'
d1['c']='C'

d2=collections.OrderedDict()
d2['c']='C'
d2['a']='A'
d2['b']='B'

print(d1)
print(d2)
print(d1==d2)

执行结果:

OrderedDict([('a', 'A'), ('b', 'B'), ('c', 'C')])
OrderedDict([('c', 'C'), ('a', 'A'), ('b', 'B')])
False

即使元素相同,但顺序不同,python也认为是2个不同的对象

python3.6的dict也是有序的,但是,只要 元素相同 ,python就认为是同一对象

d1={}
d1['a']='A'
d1['b']='B'
d1['c']='C'

d2={}
d2['c']='C'
d2['a']='A'
d2['b']='B'

print(d1)
print(d2)
print(d1==d2)

执行结果:

{'a': 'A', 'b': 'B', 'c': 'C'}
{'c': 'C', 'a': 'A', 'b': 'B'}
True