假设我们有一个由嵌套数据类型组成的数据结构,是否有一种打印数据类型的方法,如:
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()
)
答案 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()>>
不同,但我认为更准确。如果您有其他想法,请给我反馈。