由于某种原因,以下函数的运行时间非常慢:def get_content(d,content): if isinstance(d,unicode): content += d content += u'\n' elif isinstance(d,dict): for key in d: content += get_content(d[key],content) elif isinstance(d,list): for el in d: content += get_content(el,content) return contentcontent = get_content(D,u'')那是虽然D比较小。在尺寸方面没有什么疯狂的事情发生。您是否看到问题所在或解决任务的更好方法?编辑:我将代码更改为...def get_content(d,content): if isinstance(d,unicode): content += [d] elif isinstance(d,dict): for key in d: content += get_content(d[key],content) elif isinstance(d,list): for el in d: content += get_content(el,content) return contentcontent = get_content(D,[])...它仍然有同样的问题。
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
问题是您在每次递归时都重新附加了全部内容。要解决这个问题,请将一个空列表传递给每个get_content调用。
def get_content(d,content):
if isinstance(d,unicode):
content += [d]
elif isinstance(d,dict):
for key in d:
content += get_content(d[key],[])
elif isinstance(d,list):
for el in d:
content += get_content(el,[])
return content
content = get_content(D,[])
添加回答
举报
0/150
提交
取消