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/

Responder a