首页 > 解决方案 > 尝试编写递归函数以迭代嵌套字典时出现 RecursionError

问题描述

我正在尝试使用递归函数迭代嵌套字典,但是我最终收到一条消息,上面写着

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'])

标签: pythondictionaryrecursion

解决方案


在任何语言中,这种形式的递归都会导致相应的递归错误,因为您不会更改传递给下一个递归调用的内容。无论传递到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)

推荐阅读