需要python字典表现得像deque(有最大长度)

Yng*_*Moe 4 python python-3.6

有没有内置(或非常简单)的方法让python字典以与deque类似的方式工作.

我需要它具有最大大小,并且当添加新密钥时,如果达到最大长度,则删除首先添加的密钥.作为自定义类实现起来应该不会太难,但总是首选使用内置类.

我正在使用Python 3.6,如果有任何帮助.

Ale*_*all 6

听起来您想要一个最近最少使用 (LRU) 缓存。

functools.lru_cache装饰可能对你有用。如果您想要更多控制,请查看包pylru或仅使用 google Python LRU 缓存。


Sra*_*raw 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)
Run Code Online (Sandbox Code Playgroud)