es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo recuperar todos los atributos de un nodo de anytree?

Para un nodo “Node” de “anytree”, ¿cómo puedo obtener todos los atributos y sus valores?

Por ejemplo, si hago lo siguiente:

>>> from anytree import Node
>>> root = Node("root")
>>> s0 = Node("sub0", parent=root, foo="10", bar="ggg")

¿Cómo puedo obtener algo como [("foo", "10"), ("bar", "ggg")]?

Puedo pensar en una ruta utilizando lo siguiente:

>>> s1 = Node("dummy", parent=root)
>>> set(dir(s0))-set(dir(s1))
{"foo", "bar"}

Pero espero que haya una forma más concisa.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener todos los atributos y sus valores para un Node de anytree, simplemente puedes usar el método Node.__dict__. Aquí tienes un ejemplo:

    >>> from anytree import Node
    >>> root = Node("root")
    >>> s0 = Node("sub0", parent=root, foo="10", bar="ggg")
    >>> attributes = s0.__dict__
    >>> attrs = [(k, v) for k, v in attributes.items() if not k.startswith('_')]
    >>> print(attrs)
    [('name', 'sub0'), ('parent', Node('/root')), ('children', []), ('foo', '10'), ('bar', 'ggg')]
    

    Esto devolverá una lista de tuplas, donde cada tupla contiene el nombre del atributo como primer elemento y su valor como segundo elemento. La condición if not k.startswith('_') se usa para excluir cualquier atributo incorporado del objeto Node.

Comments are closed.