OrderedDict是dict的子类,它会记录第一次插入键的顺序,这使得你可以按照键的插入顺序来遍历OrderedDict,需要指出的是,从python3.6 开始内置的字典也具备这种能力,因此很多人质疑OrderedDict是否还有存在的必要,但仔细观察 OrderedDict 将发现该类仍然提供有价值的特性。
首先声明一点,在python3.6 之前,字典都是无序的。
dic = {}
dic['a'] = 'a'
dic['b'] = 'b'
dic['c'] = 'c'
for key, value in dic.items():
print(key, value)
上面这段代码,在python2.7环境下执行的结果是
('a', 'a')
('c', 'c')
('b', 'b')
在python3.6 环境下执行的结果是
a a
b b
c c
从python3.6开始,字典已经是有序的了,这里所说的有序,并不是按照key的大小进行排序,而是指插入的顺序,特别强调一点,这个特性不是python这门语言的特性,而是CPython的特性。
在python3.6之前,想要实现有序字典,就必须依靠OrderedDict,在3.6以后,则不再是必须,如果还有什么理由使用OrderedDict的话,OrderedDict提供了move_to_end方法,可以将一个key-value移动到末尾,使用popitem方法可以按照先进后出的原则删除最后加入的key-value对
from collections import OrderedDict
order_dict = OrderedDict()
order_dict[1] = 1
order_dict['a'] = 2
order_dict['0'] = 3
for key, value in order_dict.items():
print(key, value)
print("*"*20)
order_dict.move_to_end(1)
for key, value in order_dict.items():
print(key, value)
QQ交流群: 211426309