尝试编写递归函数以迭代嵌套字典时遇到RecursionError

时间:2019-05-11 01:16:17

标签: python dictionary recursion

我试图通过使用递归函数来迭代嵌套字典,但是最终我收到一条消息,提示

  

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

2 个答案:

答案 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
相关问题