我想在python中使用字典,但是将键/值对的数量限制为X。换句话说,如果dict当前正在存储X个键/值对,并且我要执行插入操作,则我希望现有的配对将被删除。如果它是最近最少插入/访问的键,那将是很好的,但这不是完全必要的。
如果标准库中存在此文件,请为我节省一些时间并指出!
Python 2.7和3.1具有OrderedDict,并且有用于早期Python的纯Python实现。
from collections import OrderedDict class LimitedSizeDict(OrderedDict): def __init__(self, *args, **kwds): self.size_limit = kwds.pop("size_limit", None) OrderedDict.__init__(self, *args, **kwds) self._check_size_limit() def __setitem__(self, key, value): OrderedDict.__setitem__(self, key, value) self._check_size_limit() def _check_size_limit(self): if self.size_limit is not None: while len(self) > self.size_limit: self.popitem(last=False)
您还必须重写其他可以插入项目的方法,例如update。的主要用途OrderedDict是,您可以控制容易弹出的内容,否则可以正常dict使用。
update
OrderedDict
dict