Python 在尝试编写递归函数以迭代嵌套字典时获取RecursionError
我试图通过使用递归函数来迭代嵌套字典,但最终得到的消息是 RecursionError:调用Python对象时超出了最大递归深度Python 在尝试编写递归函数以迭代嵌套字典时获取RecursionError,python,dictionary,recursion,Python,Dictionary,Recursion,我试图通过使用递归函数来迭代嵌套字典,但最终得到的消息是 RecursionError:调用Python对象时超出了最大递归深度 在任何语言中,这种形式的递归都会导致相应的递归错误,因为您不会更改传递给下一个递归调用的内容。无论传递给递归的第一级(这里是var),相同的值都会传递给递归的第二级,依此类推 此外,temp['A']基本上是一个列表,而不是字典 试试这个: def iterate_over(var): if type(var) is list : for x
在任何语言中,这种形式的递归都会导致相应的递归错误,因为您不会更改传递给下一个递归调用的内容。无论传递给递归的第一级(这里是
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)
在任何语言中,这种形式的递归都会导致相应的递归错误,因为您不会更改传递给下一个递归调用的内容。无论传递给递归的第一级(这里是
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)
您得到一个递归错误,因为条件
len(var)>1
将始终计算为true,因为您没有在函数内部更新var
我不确定您想要完成什么,但您的功能应该如下所示:
def iterate_over(var):
if(len(var) > 1):
return iterate_over(var[1:])
else:
return var
您得到一个递归错误,因为条件
len(var)>1
将始终计算为true,因为您没有在函数内部更新var
我不确定您想要完成什么,但您的功能应该如下所示:
def iterate_over(var):
if(len(var) > 1):
return iterate_over(var[1:])
else:
return var
一般来说:如果有东西要迭代,那么迭代,不要递归。Python在迭代方面尤其出色,而在递归方面则不太出色。一般来说:如果有什么东西需要迭代,那么迭代,不要递归。Python在迭代方面尤其出色,而在递归方面则不太出色。