The*_*Kid 1 python dictionary nested
样本输入:
a = {
"key1": 1,
"key2": {
"key3": 1,
"key4": {
"key5": 4
}
}
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
key1 1
key2 1
key3 2
key4 2
key5 3
Run Code Online (Sandbox Code Playgroud)
如何遍历此嵌套字典的每个元素并打印每个单独元素的深度?
使用递归:
def print_depth(d, start=0):
for key, value in d.items():
print(key, start + 1)
if isinstance(value, dict):
print_depth(value, start=start+1)
a = {
"key1": 1,
"key2": {
"key3": 1,
"key4": {
"key5": 4
}
}
}
print_depth(a)
Run Code Online (Sandbox Code Playgroud)
输出
key1 1
key2 1
key3 2
key4 2
key5 3
Run Code Online (Sandbox Code Playgroud)
使用堆栈来避免超出递归限制(请参阅sys.getrecursionlimit):
def print_depth(d):
stack = [(d, list(d.keys()))]
while stack:
cur, keys = stack.pop()
while keys:
k, keys = keys[0], keys[1:]
print(k, len(stack) + 1)
v = cur[k]
if isinstance(v, dict):
stack.append((cur, keys))
stack.append((v, list(v.keys())))
break
Run Code Online (Sandbox Code Playgroud)
输出
key1 1
key2 1
key3 2
key4 2
key5 3
Run Code Online (Sandbox Code Playgroud)