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)