En/na Garito ha escrit:
yDict({"a": {"b": {"c": "abc"}}}) -> {'a': {'b': {'c': 'abc'}}}
Para que yDict funcione todo valor que no sea "final" debe ser a su vez
un yDict (es una estructura recursiva). Si pasas una serie de
diccionarios anidados al constructor este no los convierte en yDict.
Para verlo más claro añade el método:
def __repr__(self) :
return "<yDict {%s}>" % ", ".join(
["%r : %r" % (k, v) for k, v in self.items()]
)
In [1]: d = yDict({"a": {"b": {"c": "abc"}}})
In [2]: d
Out[2]: <yDict {'a' : {'b': {'c': 'abc'}}}>
In [3]: dd = yDict()
In [4]: dd["a/b/c"] = "abc"
In [5]: dd
Out[5]: <yDict {'a' : <yDict {'b' : <yDict {'c' : 'abc'}>}>}>
En [2] los diccionarios "interiores" no son instancias de yDict, en [5]
sí. Deberás redefinir '__init__' para que la instancia se inicialice
correctamente. También deberás redefinir el método 'setdefault' y
posiblemente otros para garantizar que la semántica de yDict sea
consistente.
Saludos
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/