小编典典

如何限制字典的大小?

python

我想在python中使用字典,但是将键/值对的数量限制为X。换句话说,如果dict当前正在存储X个键/值对,并且我要执行插入操作,则我希望现有的配对将被删除。如果它是最近最少插入/访问的键,那将是很好的,但这不是完全必要的。

如果标准库中存在此文件,请为我节省一些时间并指出!


阅读 228

收藏
2021-01-20

共1个答案

小编典典

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使用。

2021-01-20