2024-10-04 01:25:02 发布
网友
我有一个类TimedCache(dict),它为每个值保留一个tuple(value, timestamp)。在
TimedCache(dict)
tuple(value, timestamp)
如何重写itervalues函数以仅返回value而忽略{}。我还是希望它是一个迭代器。在
itervalues
value
您可能需要创建自己的MutableMapping(来自collections的抽象基类)以获得更高的一致性。在
实现的唯一方法是__iter__、__len__、__getitem__、__setitem__和{}。在
__iter__
__len__
__getitem__
__setitem__
它们由以下方法使用(已实施): __contains__,keys,items,values,iterkeys,iteritems,itervalues,get,__eq__,和{}。在
__contains__
keys
items
values
iterkeys
iteritems
get
__eq__
以下是根据任意条件筛选项目的字典示例:
class FilteredDict(MutableMapping): def accept(self, key): # Only accept items with interger key and string value return isinstance(key, int) and isinstance(self[key], str) def __init__(self, *args, **kwargs): self.dict = dict(*args, **kwargs) def __getitem__(self, key): return self.dict[key] def __setitem__(self, key, value): self.dict[key] = value def __delitem__(self, key): del self.dict[key] def __len__(self): return sum(1 for _ in self) def __iter__(self): for key in self.dict: if self.accept(key): yield key def __repr__(self): return repr(dict(self)) def __str__(self): return str(dict(self))
示例:
我找到了一个解决方案,但我想知道是否有更好的解决方案:)
def itervalues(self): for value, timestamp in super(TimedCache, self).itervalues(): if time.time() - timestamp <= self.ttl: yield value
您可能需要创建自己的MutableMapping(来自collections的抽象基类)以获得更高的一致性。在
实现的唯一方法是}。在
__iter__
、__len__
、__getitem__
、__setitem__
和{它们由以下方法使用(已实施):}。在
__contains__
,keys
,items
,values
,iterkeys
,iteritems
,itervalues
,get
,__eq__
,和{以下是根据任意条件筛选项目的字典示例:
示例:
^{pr2}$我找到了一个解决方案,但我想知道是否有更好的解决方案:)
相关问题 更多 >
编程相关推荐