我需要一种数据结构,它的行为大多像字典(可以通过键访问/删除任何元素),但也具有以下属性:
- 最多可以容纳N个元素(在实际中,N在数百到数千之间)。
- 该结构包含每次访问(获取/设置/删除)时递增的最后操作号码。
- 元素的上次访问会被跟踪 - 每当添加或访问一个项目时,操作编号就会保存在该结构中的项目旁边。
- 如果要添加新项并且该结构保持最大元素数量,则删除操作编号最低的元素(比其他元素的最后访问时间早很长时间),并替换为新元素。
我使用这样的结构来维护对象缓存 - 检索每个元素非常耗时,并且只有少量元素被频繁访问。如果元素不再经常使用,它将最终落在此缓存的底部,并在下一次插入到该结构中时被替换。
我的当前实现(在Python 3中)是一个字典,其中包含键 -> 上次访问编号和对象本身的元组。它运行良好,但我几乎肯定已经在某个地方看到过非常类似的结构 - 是否有像这样缓存的结构呢?