我遇到了这个可以压缩字典的功能:
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)