creando una lista predeterminada en python

Estoy tratando de crear una lista equivalente para la muy útilcollections.defaultdict. El siguiente diseño funciona muy bien:

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 lo usa:

>>> dl = defaultlist(lambda:'A')
>>> dl[2]='B'
>>> dl[4]='C'
>>> dl
['A', 'A', 'B', 'A', 'C']

¿Qué debo agregar a la lista predeterminada para admitir el siguiente comportamiento?

>>> dl = defaultlist(dict)
>>> dl[2]['a'] = 1
>>> dl
[{}, {}, {'a':1}]

Respuestas a la pregunta(4)

Su respuesta a la pregunta