【发布时间】:2020-11-03 13:34:26
【问题描述】:
警告:这仍然是 Python 2.7!
由于某种原因,以下函数的运行时间非常慢:
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 content
content = 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 content
content = get_content(D,[])
...它仍然有同样的问题。
【问题讨论】:
-
它在你的机器上运行了多少小时?
-
递归中没有基本情况
-
不推荐重复的字符串连接。尝试将您的数据附加到列表并在最后使用
'\n'.join(your_list)。每次连接字符串时,都必须在内存中重新创建整个字符串。见stackoverflow.com/questions/3055477/… -
@RadioControlled:递归结束的情况,即
get_content()不再被调用。 -
您不应该为所有
get_content调用传递一个空列表吗?例如只附加“新”的东西
标签: python string dictionary unicode key-value-store