Python 中 collections.OrderedDict 的用途
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_end 或 popitem 功能时使用 OrderedDict。