首页 > 解决方案 > 简单循环超过最大递归深度

问题描述

我正在尝试创建一个非常直接的循环,该循环对大约 900 个嵌套字典进行排序,并返回以键命名的列表中的所有值。我收到以下递归错误:

    Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "<stdin>", line 4, in myprint
  File "<stdin>", line 4, in myprint
  File "<stdin>", line 4, in myprint
  [Previous line repeated 995 more times]
  File "<stdin>", line 2, in myprint
RecursionError: maximum recursion depth exceeded while calling a Python object

这是我目前正在使用的代码:

import pandas as pd
df = pd.read_csv("/Users/--/--/--/--/--/.csv")
def myprint(d):
    for k, v in data.items():
            if isinstance(v, dict):
                myprint(v)
            else:
                print("{0} : {1}".format(k, v))
                setattr(sys.modules[__name__], k, [v])
            
            
for i in df['file_num']:
    with open("/Users/--/--/--/--/allDAFs{}.json".format(i)) as f:
        data=json.load(f)
    myprint(data)

对于如何解决或解决此问题的任何潜在见解,我将不胜感激。谢谢你。

标签: pythonpandasloopsrecursion

解决方案


for k, v in data.items():问题是每次调用该函数时都会调用此循环。

我认为你打错字data.items而不是d.items

import pandas as pd
df = pd.read_csv("/Users/--/--/--/--/--/.csv")
import pandas as pd
df = pd.read_csv("/Users/--/--/--/--/--/.csv")
def myprint(d):
#   for k, v in data.items():
    for k, v in d.items():
            if isinstance(v, dict):
                myprint(v)
            else:
                print("{0} : {1}".format(k, v))
                setattr(sys.modules[__name__], k, [v])
            
            
for i in df['file_num']:
    with open("/Users/--/--/--/--/allDAFs{}.json".format(i)) as f:
        data=json.load(f)
    myprint(data)

推荐阅读