美文网首页
OrderedDict实现FIFO(先进先出队列)的dict

OrderedDict实现FIFO(先进先出队列)的dict

作者: 忘了呼吸的那只猫 | 来源:发表于2018-11-27 11:14 被阅读24次

OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:

from collections import OrderedDict

class LastUpdatedOrderedDict(OrderedDict):

    def __init__(self, capacity):
        super(LastUpdatedOrderedDict, self).__init__()
        self._capacity = capacity

    def __setitem__(self, key, value):
        containsKey = 1 if key in self else 0
        if len(self) - containsKey >= self._capacity:
            last = self.popitem(last=False)
            print('remove:', last)
        if containsKey:
            del self[key]
            print('set:', (key, value))
        else:
            print('add:', (key, value))
        OrderedDict.__setitem__(self, key, value)

相关文章

网友评论

      本文标题:OrderedDict实现FIFO(先进先出队列)的dict

      本文链接:https://www.haomeiwen.com/subject/wmxgqqtx.html