defaultdict等效于列表

Jon*_*han 10 python collections containers defaultdict

有没有\你如何建立一个相当的python非常有用collections.defaultdict

想象一下这种容器的用法:

>>> a = collections.defaultlist(0)
>>> a[2]=7
>>> a[4]='x'
>>> a
[0,0,7,0,'x']
Run Code Online (Sandbox Code Playgroud)

更新:我添加了一个后续问题,为此构造添加更多功能

Fin*_*inn 11

我认为使用它会有点混乱; 然而,这是我第一次想到如何做到这一点:

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)

这需要一个可调用的(我认为这是默认值的工作原理)默认值.

当我跑:

a = defaultlist(int)
print a
a[2] = 7
a[4] = 'x'
print a
Run Code Online (Sandbox Code Playgroud)

我回来了:

[]
[0, 0, 7, 0, 'x']
Run Code Online (Sandbox Code Playgroud)