编程语言
首页 > 编程语言> > python-如何pprint使用类实现的树数据结构?

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