Discuss / Python / 还是提交下代码

还是提交下代码

Topic source

久疤_796

#1 Created at ... [Delete] [Delete and Lock User]

对存在的key,采用覆盖的方式,不改变其顺序。 如果是删除后再添加,那么它就跑到最后面去了。 根据需要吧。

#使用OrderedDict实现FIFO的Dict,当超出容量后,自动删除最早添加的key
from collections import OrderedDict

class DictFIFO(OrderedDict):
    def __init__(self,capacity=None):
        super().__init__()
        self._capacity = capacity
    def __setitem__(self,key,value):
        if self._capacity and key not in self and len(self)>=self._capacity:
                last = self.popitem(last=False)
        OrderedDict.__setitem__(self,key,value)

f = DictFIFO()

  • 1

Reply