Sto provando a creare una lista equivalente per l'utilissimo collections.defaultdict
. Il seguente disegno funziona bene:creazione di una lista predefinita in 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)
Ecco come lo si utilizza:
>>> dl = defaultlist(lambda:'A')
>>> dl[2]='B'
>>> dl[4]='C'
>>> dl
['A', 'A', 'B', 'A', 'C']
Cosa devo aggiungere alla defaultlist in modo da sostenere il seguente comportamento?
>>> dl = defaultlist(dict)
>>> dl[2]['a'] = 1
>>> dl
[{}, {}, {'a':1}]
Questa domanda è un seguito a [questo] (http://stackoverflow.com/questions/8719558/defaultdict-equivalent-for-lists) – Jonathan
Suppongo che tu stia solo cercando il metodo per sovraccaricare per l'accesso all'elemento (anziché per l'assegnazione dell'oggetto)? – delnan
Non ha 'dl [2] = {'a', 1}' ha più senso? – FakeRainBrigand