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

由于某种原因,以下函数的运行时间非常慢:


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,[])

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


吃鸡游戏
浏览 113回答 1
1回答

Smart猫小萌

问题是您在每次递归时都重新附加了全部内容。要解决这个问题,请将一个空列表传递给每个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 contentcontent = get_content(D,[])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python