整体说明
OrderedDict是 Python 标准库中的一个类,它位于collections模块下- 相对于普通字典,
OrderedDict能够记住元素插入的顺序,在迭代时,元素会按照插入的先后顺序被返回 OrderedDict类对象的主要特点有:- 仍然是一个字典 :即仍然是 Key-Value 结构,且 Key 值不能重复
- 保持插入顺序 :迭代时,元素会按照插入的顺序返回
- 顺序敏感 :如果两个
OrderedDict包含相同内容,但元素插入顺序不同,它们会被视为不相等 - 支持移动操作 :可以通过
move_to_end()方法将元素移动到开头或末尾 - 删除操作保留顺序 :删除元素后,剩余元素的顺序保持不变
OrderedDict 的基本用法
OrderedDict的一些常见操作示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29from collections import OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
od['b'] = 10
# 迭代时保持插入顺序
for key, value in od.items():
print(key, value) # 输出: a 1, b 10, c 3
print('---')
# 移动元素到开始
od.move_to_end('b', last=False)
for key, value in od.items():
print(key, value) # 输出: b 10, a 1, c 3
print('---')
# 移动元素到末尾
od.move_to_end('b', last=True)
for key, value in od.items():
print(key, value) # 输出: a 1, c 3, b 10
print('---')
# 删除元素后结果不变
del od['c']
for key, value in od.items():
print(key, value) # 输出: a 1, b 10
比较:与普通字典的区别
- 在 Python 3.7 及以后的版本中,普通字典也会保持插入顺序,但
OrderedDict仍然有其独特优势:- 明确的顺序语义 :使用
OrderedDict可以更清晰地表达代码对顺序的依赖 - 支持顺序相关的方法 :如
move_to_end()、popitem(last=False)等,且这两个函数都可以通过last参数指定是操作第一个还是最后一个 - 顺序敏感的比较 :两个字典即使包含元素相同,但元素顺序不同也会被视为不等
- 明确的顺序语义 :使用