【发布时间】:2020-12-23 00:46:39
【问题描述】:
我已经创建了一个这样的字典:
d = {1: {3: {}, 4: {6: {}}}, 5: {}}
然后我遍历所有项目,我可以递归地做到这一点:
def pretty(d, indent=0):
for key, value in d.items():
print('\t' * indent + str(key))
if isinstance(value, dict):
pretty(value, indent+1)
else:
print('\t' * (indent+1) + str(value))
pretty(d)
我的目标是以我可以操作的方式将输出存储到字符串变量中。因此结果应该是这样的:
msg ="""
1
3
4
6
5
"""
我尝试通过以下实现实现我的目标:
def pretty(d, indent=0, indent_before=0, msg_old=""):
for key, value in d.items():
#print('\t' * indent + str(key) + '({})({})'.format(indent,indent_before))
msg = msg_old+'\t' * indent + str(key) + '({})({})\n'.format(indent,indent_before)
if isinstance(value, dict):
pretty(value, indent+1, indent, msg)
else:
print('\t' * (indent+1) + str(value))
return msg
msg = pretty(result)
print(msg)
但我尝试的输出是:None
您能否提出一种聪明而优雅的方法来达到预期的效果?
【问题讨论】:
-
请详细解释“没有成功”是什么意思,您的函数应该如何工作,以及它在什么时候首先出错。
标签: python recursion methods return recursive-datastructures