Estoy tratando de crear una lista equivalente para el muy útil collections.defaultdict
. El siguiente diseño funciona muy bien:creando una lista por defecto en python
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)
Así es como usted lo utiliza:
>>> dl = defaultlist(lambda:'A')
>>> dl[2]='B'
>>> dl[4]='C'
>>> dl
['A', 'A', 'B', 'A', 'C']
¿Qué debo añadir a la defaultlist con el fin de apoyar el siguiente comportamiento?
>>> dl = defaultlist(dict)
>>> dl[2]['a'] = 1
>>> dl
[{}, {}, {'a':1}]
Esta pregunta es una continuación de [este] (http://stackoverflow.com/questions/8719558/defaultdict-equivalent-for-lists) – Jonathan
Supongo que solo está buscando el método para sobrecargar para el acceso al elemento (a diferencia de la asignación del elemento)? – delnan
¿No sería 'dl [2] = {'a', 1}' tener más sentido? – FakeRainBrigand