how - print dictionary python
Python, doble defecto predeterminado de autoenumeraciĆ³n (2)
Para optimizar algunos códigos, estoy usando lo siguiente:
a = defaultdict(lambda: len(a))
a[0] = 0
a[1] = 1
a[7] = 2
...
Ahora mi problema es que necesitaría un incumplimiento predeterminado anidado, es decir,
b = defaultdict(lambda: defaultdict(lambda: len(b[?]))
b[0][0] = 0
b[0][1] = 1
b[1][0] = 0
b[1][1] = 1
...
Gracias por adelantado...
Si alguna vez quieres hacer una clase:
class CountDict(defaultdict):
def __init__(self):
defaultdict.__init__(self, self.default_factory)
def default_factory(self):
sub = defaultdict()
sub.default_factory = sub.__len__
return sub
Normalmente no puedes hacer esto en una lambda porque necesitas asignar el dict predeterminado del niño a una variable para poder obtener su len luego, lo que no es posible en lambdas. @Duncan se le ocurrió una solución utilizando la lista de comprensión para actuar como asignación. Buen trabajo :) pero no lo uses ...: D
def enumdict():
a = defaultdict(lambda : len(a))
return a
b = defaultdict(enumdict)