def __getitem__(self, key): frozen_key = freeze(key) if frozen_key in self: return WeakValueDictionary.__getitem__(self, frozen_key) value = self.lookup(key) self[frozen_key] = value return value
def __getitem__(self, key): frozen_key = freeze(key) if frozen_key in self: return WeakValueDictionary.__getitem__(self, frozen_key) value = self.lookup(key) self[frozen_key] = value return value
class LRUCache: def __init__(self, max_size): self.LRU = [Node(time(), "none%s"%i) for i in range(max_size)] self.search = WeakValueDictionary() for i in self.LRU: self.search[i.name] = i def __setitem__(self, name, value): q = self.search.get(name, None) if q: q.data = value q.time = time() else: lru = self.LRU[0] self.search.pop(lru.name) lru.data = value lru.time = time() lru.name = name self.search[lru.name] = lru self.LRU.sort() def get(self, name, default=None): pos = None try: pos = self.search.__getitem__(name) pos.time = time() return pos.data except KeyError: if default is not None: return default else: raise
def __getitem__(self, key): value = WeakValueDictionary.__getitem__(self, key) # check boundaries to minimiza duplicate references while len(self.queue) > 0 and self.queue[0][0] == key: # item at left end of queue pop it since it'll be appended # to right self.queue.popleft() # only append if item is not at right end of queue if not (len(self.queue) and self.queue[-1][0] == key): self.queue.append((key, value)) return value
def __getitem__(self, key): value = WeakValueDictionary.__getitem__(self, key) # check boundaries to minimiza duplicate references while len(self.queue) > 0 and self.queue[0][0] == key: # item at left end of queue pop it since it'll be appended # to right self.queue.popleft() # only append if item is not at right end of queue if not (len(self.queue) and self.queue[-1][0] == key): self.queue.append((key, value)) return value
def __getitem__(self, k): v = WeakValueDictionary.__getitem__(self, k) # KeyError if not found self.keep_this(v) return v
def __getitem__(self, k): v = WeakValueDictionary.__getitem__(self, k) # KeyError if not found self.keep_this(v) return v
def __getitem__(self, key): if isinstance(key, bytes): key = key.decode("utf-8") return WeakValueDictionary.__getitem__(self, key)