python - 简单循环超过最大递归深度
问题描述
我正在尝试创建一个非常直接的循环,该循环对大约 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)
对于如何解决或解决此问题的任何潜在见解,我将不胜感激。谢谢你。
解决方案
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)
推荐阅读
- flutter - Flutter - 如何在 FFMPEG 命令中获取使用数据(输入和输出)
- python - Pandas 使用 if 语句比较日期和日期时间索引
- java - 使用 Spinner 过滤 ListView
- python - Python pandas:如何获取混合数据类型列中对象的数据类型?
- list - F#匹配模式鉴别器未定义问题
- mysql - 在 SQL 中比较日期 || 在 where 子句中使用日期
- javascript - React:有或没有 useCallback 的优化回调
- c++ - 如何动态存储 QVector 的地址
在另一个 QVector *>? - c# - 单击禁用按钮时C#秒表停止
- c - 将指针存储为长“警告:赋值使指针从没有强制转换的整数”