这是我的格言:
{
"queued": {"failed":{}, "undelivered":{"delivered":{}}}
}
输出应为:
排队0
失败1
未送达1
交付2
我现在正在使用的代码(来自其他堆栈问题,它不是重复的):
def print_depth(our_dict, i=0, target_status):
for key, value in d.items():
if isinstance(value, dict):
i+=1
print_depth(value, i, target_status)
这将获得输出:
队列0
失败1
未送达2
交付3
你可能还想知道什么是“目标状态”。这是一个字符串,应该与dict的键进行比较,当找到它时,它应该返回“i”,这是给定键的深度值。谢谢
2条答案
按热度按时间6ojccjat1#
你在增加
i
每次通过循环。对于递归调用,应该只增加一次。顺便做那件事i+1
作为参数,而不是重新分配局部变量。在可选参数之后也不能有位置参数,因此我为其添加了一个默认值
target_status
. 我加了一个print()
线路。p1iqtdky2#