簡體   English   中英

需要python字典表現得像deque(有最大長度)

[英]Need python dictionary to act like deque (have maximum length)

有沒有內置(或非常簡單)的方法讓python字典以與deque類似的方式工作。

我需要它具有最大大小,並且當添加新密鑰時,如果達到最大長度,則刪除首先添加的密鑰。 作為自定義類實現起來應該不會太難,但總是首選使用內置類。

我正在使用Python 3.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)

聽起來你想要一個最近最少使用(LRU)的緩存。

functools.lru_cache裝飾器可能對您有用。 如果您想要更多控制,請查看包pylru或只是谷歌Python LRU緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM