我已经开始使用anytree,但目前在我的树上迭代时面临一些挑战。
测试树:
top = Node("top", keywords="topleveltree")
hello = Node("hello", keywords="hello", parent=top)
hello1 = Node("hello X", keywords="hello X", answer="Say hello to X", parent=hello)
hello2 = Node("hello Y", keywords="hello Y", answer="Say hello to Y", parent=hello)
goodbye = Node("goodbye", keywords="goodbye", parent=top)
goodbye1 = Node("goodbye X", keywords="goodbye X", answer="Say goodbye to X", parent=goodbye)
渲染树:
Node('/top', keywords='topleveltree')
├── Node('/top/hello', keywords='hello')
│ ├── Node('/top/hello/hello X', answer='Say hello to X', keywords='hello X')
│ └── Node('/top/hello/hello Y', answer='Say hello to Y', keywords='hello Y')
└── Node('/top/goodbye', keywords='goodbye')
└── Node('/top/goodbye/goodbye X', answer='Say goodbye to X', keywords='goodbye X')
我的脚本检索树的第一级(/top/hello 和 /top/goodbye),现在我基本上试图获取它们下方的任何内容(尤其是关键字和答案)。
我已经能够使用多种方式来实现这一点,例如hello.descendants或者只是使用LevelOrderIter(hello),但是我现在正尝试使用某种 python 逻辑(其中变量现在是一个字符串)来做同样的事情。
我试图运行 Node(hello).descendants 但它返回一个空数组。但是,如果我运行type(hello)并且type(Node('hello'))两者都返回<class 'anytree.node.node.Node'>
前任:
categories = ['hello','goodbye']
for category in categories:
print category # string
print Node(category) # Node('/hello')
print hello # Node('/top/hello', keywords='hello')
hello.descendants # ok
Node(category).descendants # ()
[node.name for node in PreOrderIter(hello, maxlevel=3)] # ok
[node.name for node in PreOrderIter(Node('hello'), maxlevel=3)] # return empty
我对树的经验很少,所以我想我缺少一些基本的东西,但找不到什么。