我发现了一个可以将字典扁平化的函数:
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
为了测试它,我创建了一个嵌套了n
次的字典,如下所示:
nesteddict = {}
for i in range(n, 0, -1):
emptydict = {}
emptydict[i] = nesteddict
nesteddict = emptydict
这个函数在n
小于999的时候可以正常工作,否则会达到递归限制:
RecursionError: maximum recursion depth exceeded while calling a Python object
经过一番搜索,似乎可以将任何递归函数转换为迭代,但我无法看出如何对我需要生成相同结果的函数进行转换。
在尝试下面的代码时,我遇到了另一个奇怪的问题,当n >= 998
时:
nesteddict = {}
for i in range(n, 0, -1):
emptydict = {}
emptydict[i] = nesteddict
nesteddict = emptydict
print(nesteddict)
我遇到了递归错误:
RecursionError: maximum recursion depth exceeded while getting the repr of an object
这很奇怪,因为我在这里看不到任何递归。