相关疑难解决方法(0)

在python中创建一个默认列表

我正在尝试创建一个非常有用的列表collections.defaultdict.以下设计很好地工作:

class defaultlist(list):
    def __init__(self, fx):
        self._fx = fx
    def __setitem__(self, index, value):
        while len(self) <= index:
            self.append(self._fx())
        list.__setitem__(self, index, value)
Run Code Online (Sandbox Code Playgroud)

以下是您使用它的方式:

>>> dl = defaultlist(lambda:'A')
>>> dl[2]='B'
>>> dl[4]='C'
>>> dl
['A', 'A', 'B', 'A', 'C']
Run Code Online (Sandbox Code Playgroud)

我应该将什么添加到默认列表以支持以下行为?

>>> dl = defaultlist(dict)
>>> dl[2]['a'] = 1
>>> dl
[{}, {}, {'a':1}]
Run Code Online (Sandbox Code Playgroud)

python list subclassing

11
推荐指数
2
解决办法
6256
查看次数

标签 统计

list ×1

python ×1

subclassing ×1