前言

今天刷算法题遇到了LeetCode 146. LRU缓存机制。解这道题的时候需要用到Python的OrderDict的特性——保持元素的插入顺序。

正文

我记得Python3.6开始,Dict已经从以前的随机顺序变为插入序了,而且Guido也明确表示在3.7版本依旧用沿用插入顺序([Python-Dev] Guarantee ordered dict literals in v3.7?) 于是我不禁思考到,那我是不是可以偷个懒不用OrderDict去处理这种问题而直接用Dict。那到底行不行呢?翻文档啊 文档中明确写道: > The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon

后话

在Python3.6、3.7版本中Dict的实现细节中实现了元素的插入序,但是这个实现细节在以后可能是会被更改的,所以不能依赖它。并且依赖它可能会造成历史代码不兼容,或者3.8、3.9…后续修改实现细节的版本的代码不兼容,假如工程师忘了这一细节的话出现bug还很难排查。 所以,用到插入序的地方还是用OrderDict吧!