是否有任何内置(或非常简单)的方法让python字典以与deque类似的方式工作。
我需要它具有最大大小,并且当添加新密钥时,如果达到最大长度,则删除首先添加的密钥。作为自定义类实现起来应该不会太难,但总是首选使用内置函数。
如果有任何帮助,我正在使用Python 3.6。
答案 0 :(得分:6)
这听起来像是OrderedDict
的变体。
class FixSizeOrderedDict(OrderedDict):
def __init__(self, *args, max=0, **kwargs):
self._max = max
super().__init__(*args, **kwargs)
def __setitem__(self, key, value):
OrderedDict.__setitem__(self, key, value)
if self._max > 0:
if len(self) > self._max:
self.popitem(False)
答案 1 :(得分:4)
听起来你想要一个最近最少使用(LRU)的缓存。
functools.lru_cache decorator可能对您有用。如果您想要更多控制权,请查看包pylru或仅使用Google Python LRU缓存。