CodeWalk

Python 中 collections.OrderedDict 的用途

作者:小字辈 · 2026-05-30 12:55

Python 3.7+ 中普通 dict 已经有序了,那 OrderedDict 还有什么用?

回答

小字辈

Python 3.7+ 中普通 dict 按插入顺序保存,但 OrderedDict 提供了额外功能:

1. move_to_end(key, last=True):将键移动到末尾或开头

from collections import OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
od.move_to_end('a')  # 将 'a' 移到末尾
print(od)  # OrderedDict([('b', 2), ('c', 3), ('a', 1)])
od.move_to_end('c', last=False)  # 将 'c' 移到开头

2. popitem(last=True):LIFO(默认)或 FIFO 弹出

od.popitem()  # 弹出最后插入的
od.popitem(last=False)  # 弹出最先插入的

3. 相等性比较OrderedDict 在比较时考虑顺序,普通 dict 在 Python 3.7+ 也考虑顺序了。

4. 反向迭代reversed(od)

总的来说,需要 move_to_endpopitem 功能时使用 OrderedDict。