小编Ous*_*ama的帖子

如何在没有递归的情况下展平嵌套字典?

我遇到了这个可以压缩字典的功能:

def flatten(dictionnary, container=None):
    if container is None:
        container = []
    for k, v in dictionnary.items():
        container.append(k)
        if v:
            flatten(v, container)
    return container
Run Code Online (Sandbox Code Playgroud)

为了测试它,我创建了一个嵌套n时间的字典,如下所示:

nesteddict = {}
for i in range(n, 0, -1):
    emptydict = {}
    emptydict[i] = nesteddict
    nesteddict = emptydict
Run Code Online (Sandbox Code Playgroud)

该函数n小于999时工作,否则命中递归限制:

RecursionError: maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)

所以经过一点点搜索之后,似乎任何递归函数都可以重写为迭代,但是我无法看到如何为我必须产生相同结果的函数完成它.

我在玩这个游戏时遇到的另一个奇怪的问题是,如果我尝试下面的代码n >= 998:

nesteddict = {}
for i in range(n, 0, -1):
    emptydict = {}
    emptydict[i] = nesteddict …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

4
推荐指数
2
解决办法
395
查看次数

标签 统计

python ×1

python-3.x ×1