python collections模块 之 orderdict
2024-09-06 11:30:55
普通字典善于隐射,其次追踪插入顺序。而 orderdict 更善于后者。因为 orderdict 内部维护了一个双向链表,大小会是普通字典的两倍。
增加方法:
popitem(last=True)
移除并返回一个键值对,last=True 时,后进先出,反之,先进先出。
move_to_end(key, last=True)
last=True时,将键值对移至最右。反之,移至最左。key不存在时,抛错 KeyError。
应用:
记录最后一次操作的键值对:
class LastUpdatedOrderedDict(OrderedDict):
'Store items in the order the keys were last added' def __setitem__(self, key, value):
super().__setitem__(key, value)
super().move_to_end(key)
限制记录大小,当记录数超出时,删除最少查找的key:
class LRU(OrderedDict):
'Limit size, evicting the least recently looked-up key when full' def __init__(self, maxsize=128, *args, **kwds):
self.maxsize = maxsize
super().__init__(*args, **kwds) def __getitem__(self, key):
value = super().__getitem__(key)
self.move_to_end(key)
return value def __setitem__(self, key, value):
super().__setitem__(key, value)
if len(self) > self.maxsize:
oldest = next(iter(self))
del self[oldest]
最新文章
- springboot(八):RabbitMQ详解
- TF Boys (TensorFlow Boys ) 养成记(四)
- SpringMVC Controller 返回值的可选类型
- jboss服务器配置多实例
- php 图片调整大小 封装类【转载】
- 《C#并行编程高级教程》第6章 PLINQ:声明式数据并行 笔记
- onSubmit的使用
- bzoj1208 [HNOI2004]宠物收养所(STL,Treap)
- apache 启动不了
- (原)Ubuntu14中安装GraphicsMagick
- Angular - - ngHref、ngSrc、ngCopy/ngCut/ngPaste
- java 继承的学习(转)
- 201521123027 <;java程序设计>;第八周学习总结
- Micropython TPYBoard 智能温控小风扇资料分享
- android自定义viewgroup初步之一----抽屉菜单
- 学会这15点,让你分分钟拿下Redis数据库
- dirlock_windows.go
- Qt代码
- .NET 通过entity framework报数据库连接错误:ORA-01017: invalid username/password; logon denied
- loadrunner&#160;运行脚本-Run-time&#160;Settings->;General->;Additional&#160;attributes设置