当前位置: 首页 > news >正文

Python OrderedDict 实现 Least Recently used(LRU)缓存

OrderedDict 实现 Least Recently used(LRU)缓存

  • 引言
  • 正文

引言

LRU 缓存是一种缓存替换策略,当缓存空间不足时,会移除最久未使用的数据以腾出空间存放新的数据。LRU 缓存的特点:

  1. 有限容量:缓存拥有固定的容量,当容量满时,需要移除旧数据。
  2. 淘汰策略:将最久未使用的缓存项移除。
  3. 快速访问:访问,插入,删除的复杂度位 O(1)。

本文将介绍 OrderedDict 实现 Least Recently used(LRU)缓存的方法。

正文

from collections import OrderedDictclass LRUCache:def __init__(self, capacity: int):self.cache = OrderedDict()self.capacity = capacitydef get(self, key: str) -> int:if key not in self.cache:return -1self.cache.move_to_end(key)return self.cache[key]def put(self, key: str, value: int) -> None:if key in self.cache:self.cache.move_to_end(key)self.cache[key] = valueif len(self.cache) > self.capacity:self.cache.popitem(last=False)if __name__ == '__main__':lru = LRUCache(2)lru.put('a', 1)lru.put('b', 2)print(lru.get('a'))  # 1lru.put('c', 3)print(lru.get('b'))  # -1

当使用 print(lru.get('a')) 语句输出结果时,键值对 'a':1 会被放在 OrderedDict 最后的位置,lru.put('c', 3) 会导致位于开始位置的元素 'b':2 被删除。当我们再次使用 print(lru.get('b')) 访问 'b':2 元素时会得到返回值 -1 提示我们当前缓存中已经不存在该元素。

如果大家觉得有用,就点个赞让更多的人看到吧~

http://www.lryc.cn/news/525585.html

相关文章:

  • LabVIEW项目中的工控机与普通电脑选择
  • Ansys Speos | Speos Meshing 网格最佳实践
  • elasticsearch segment数量对读写性能的影响
  • 全同态加密理论、生态现状与未来展望(中2)
  • 鸿蒙UI(ArkUI-方舟UI框架)-开发布局
  • RPC是什么?和HTTP区别?
  • Linux C\C++编程-建立文件和内存映射
  • 行政纠错——pycorrector学习
  • Go的defer原理
  • Windows 下本地 Docker RAGFlow 部署指南
  • 专题三_穷举vs暴搜vs深搜vs回溯vs剪枝_全排列
  • 【IEEE Fellow 主讲报告| EI检索稳定】第五届机器学习与智能系统工程国际学术会议(MLISE 2025)
  • 华为E9000刀箱服务器监控指标解读
  • 【LC】2544. 交替数字和
  • QT QTreeWidget控件 全面详解
  • 欧几里得算法求最小公倍数和最大公约数
  • Selenium配合Cookies实现网页免登录
  • DeepSeek R1模型解读与使用
  • Windows电脑不小心点击了关机,关机过程中如何阻止
  • CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)
  • 【吉林乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移内容测评
  • fpga学习入门 串口rs232回环
  • 智启未来,AI筑梦科技新星”------华清远见成都中心2025冬令营圆满结束
  • 接上篇基于Alertmanager 配置钉钉告警
  • DDD - 如何设计支持快速交付的DDD技术中台
  • JAVA与数据结构-线性表
  • C++|开源日志库log4cpp和glog
  • React Context 实现全局组件注册
  • 基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型
  • strdup 函数