Python: 获取字典结构中的所有字符串

Python: Getting all strings inside dictionary structure

警告:这仍然是 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,[])

...它仍然有同样的问题。

问题是您在每次递归时都重新附加了全部内容。要解决将空列表传递给每个 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,[])