我试图通过使用递归函数来迭代嵌套字典,但是最终我收到一条消息,提示
RecursionError:调用Python对象时超出了最大递归深度
def iterate_over(var):
if(len(var)>1):
iterate_over(var)
else:
return var
temp={'A':[{'B':[{'D':23},{'E':43}]},{'C':44}]}
iterate_over(temp['A'])
答案 0 :(得分:0)
在任何语言中,这种递归形式都会导致相应的递归错误,因为您没有更改传递给下一个递归调用的内容。无论传递到递归的第一级(这里为var
),什么值都会传递给递归的第二级,依此类推。
此外,temp['A']
基本上是列表,而不是字典。
尝试一下:
def iterate_over(var):
if type(var) is list :
for x in var:
iterate_over(x)
elif(type(var) is dict and len(var)>0):
print (next(iter(var.values())))
iterate_over(next(iter(var.values())))
temp={'A':[{'B':[{'D':23},{'E':43}]},{'C':44}]}
iterate_over(temp)
答案 1 :(得分:0)
由于没有在函数内部更新array (
0 => '1',
1 => 'A',
2 => 'a',
3 => 'B',
4 => 'b',
5 => 'C',
6 => 'c',
7 => 'Æ',
8 => 'æ',
)
,所以条件len(var) > 1
始终为true,因此您会收到RecursionError。
我不确定您要完成什么,但是您的功能应如下所示:
var