File size: 665 Bytes
7b64dcd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from collections import OrderedDict
class LRUCacheDict(OrderedDict):
"""带有大小限制的字典,自动淘汰最近最少使用的项"""
def __init__(self, *args, maxsize: int = 10, **kwargs):
assert maxsize > 0
self.maxsize = maxsize
super().__init__(*args, **kwargs)
def __setitem__(self, key, value):
super().__setitem__(key, value)
super().move_to_end(key)
while len(self) > self.maxsize:
oldkey = next(iter(self))
super().__delitem__(oldkey)
def __getitem__(self, key):
val = super().__getitem__(key)
super().move_to_end(key)
return val |