python - 尝试编写递归函数以迭代嵌套字典时出现 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'])
解决方案
在任何语言中,这种形式的递归都会导致相应的递归错误,因为您不会更改传递给下一个递归调用的内容。无论传递到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)
推荐阅读
- mysql - MYSQL 查询以查找类似于连接字符串的字符串
- javascript - 访问和单击没有 ID 或类标签的按钮
- javascript - 如何使用 lodash _.size 确定属性出现在对象数组上的次数?
- unity3d - 如何在正交相机中使世界画布 ui 图像大小相等?
- powershell - 将命令作为脚本的一部分运行但单独运行时不会出错
- video - 将一批mp4视频的最后一帧提取为jpg
- ios - 从中心转换 UIView
- javascript - 在 jquery get() 方法中遵循重定向 URL
- bash - 在 bash 中使用查找/执行命令设置文件格式
- python - pypi:如何检查包是否正在使用轮子