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