python-如何pprint使用类实现的树数据结构?
作者:互联网
我知道pprint可以漂亮地打印嵌套列表或字典,这两种都是树结构的类型,但是我想使用任意数量的子代pprint基于类的树,以便根据节点的缩排向右缩进在树上的水平.
可以使用pprint做我想做的事情吗?如果可以,怎么做?我可以编写自己的函数来漂亮地打印一棵树,但是我想检查是否需要这样做.
考虑以下示例:
class Tree:
def __init__(self, value, *args):
self.value = value
self.children = args
tree = Tree("+", Tree(1), Tree("*", Tree(2), Tree(3)))
如果我们要漂亮地打印树,这是我的预期输出:
+
1
*
2
3
同样,我当然可以滚动自己的函数,但是我想看看是否可以使用pprint代替它,因为那样会更容易,而我只是忽略了一些东西.
pprint documentation没有为我的用例提供示例.
如果有什么不同,我正在使用Python 2.7.
解决方法:
pprint与定义了__repr__方法的任意类一起使用.
为了在这里得到想要的东西,我认为您必须管理自己的嵌套,这时您可以只使用打印.
def __repr__(self, depth=1):
return_string = [str(self.value)]
for child in self.children:
return_string.extend(["\n", " " * (depth+1), child.__repr__(depth+1)])
return "".join(return_string)
然后pprint(tree)和print tree都给你
+
1
*
2
3
标签:python-2-7,pretty-print,tree,pprint,python 来源: https://codeday.me/bug/20191111/2021772.html