打印数据结构/数据类型层次结构

时间:2015-06-16 01:12:02

标签: python data-structures

假设我们有一个由嵌套数据类型组成的数据结构,是否有一种打印数据类型的方法,如:

Dict()<List()<Dict()>>

带数值的示例数据结构:

complexDataStructure = {"FirstDict":[{"AnotherDict":[[1,2,3],[1,2,3] ]}  , {"OneMoreDict":[[1,2,3],[1,2,3] ]}  ]}

>>> output Dict()<List()<Dict()>>

你可以看到嵌套的结构及其值,我想以类似的方式打印数据类型并考虑递归方法,但不是每个数据结构都是可迭代的(如set())或并非所有值都可以通过切片(dict()

来访问

1 个答案:

答案 0 :(得分:1)

请查看以下内容是否符合您的要求:

def ppt(data):
    if isinstance(data, int):
        return "Int()"
    elif isinstance(data, str):
        return "Str()"
    elif isinstance(data, list):
        if len(data) == 0:
            return "List()"
        else:
            return "List()<" + ", ".join([ppt(item) for item in data]) + ">"
    elif isinstance(data, dict):
        if len(data) == 0:
            return "Dict()"
        else:
            return "Dict()<" + ", ".join([ppt(data[key]) for key in data]) + ">"
    else:
        return "Unknown()"

当输入为[{}, []]时,输出确实是List()<Dict(), List()>

>>> print(ppt([{}, []]))
List()<Dict(), List()>

但当输入为complexDataStructure时输出为:

Dict()<List()<Dict()<List()<List()<Int(), Int(), Int()>, List()<Int(), Int(), Int()>>>, Dict()<List()<List()<Int(), Int(), Int()>, List()<Int(), Int(), Int()>>>>>

与您的Dict()<List()<Dict()>>不同,但我认为更准确。如果您有其他想法,请给我反馈。