python有序字典---OrderedDict

OrderedDict是dict的子类,它会记录第一次插入键的顺序,这使得你可以按照键的插入顺序来遍历OrderedDict,需要指出的是,从python3.6 开始内置的字典也具备这种能力,因此很多人质疑OrderedDict是否还有存在的必要,但仔细观察 OrderedDict 将发现该类仍然提供有价值的特性。

1. 有序字典与无序字典

首先声明一点,在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的特性。

2. OrderedDict 有序字典

在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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案