bay*_*bay 5 python recursion dictionary
这是字典:
data = {
'a': {
'b': {
'c': {
'd': {
'e': {
'f': 1,
'g': 50,
'h': [1, 2, 4],
'i': 3,
'j': [7, 9, 6],
'k': [
[('x', 'abc')],
[('y', 'qwe')],
[('z', 'zxc')]
]
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是在可能的情况下查找值并将其转换为字典:
data = {
'a': {
'b': {
'c': {
'd': {
'e': {
'f': 1,
'g': 50,
'h': [1, 2, 4],
'i': 3,
'j': [7, 9, 6],
'k': [{
'x': 'abc'
}, {
'y': 'qwe'
}, {
'z': 'zxc'
}]
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为可以使用递归来完成,我什至已经写了一篇,但是没有用。
def f(d):
for key, value in d.iteritems():
if type(d[key]) is dict:
f(d)
try:
d[key] = dict(d[key])
except:
if type(d[key]) is list:
for i in d[key]:
try:
d[key][i] = dict(d[key][i])
except:
pass
return d
Run Code Online (Sandbox Code Playgroud)
错误:
RecursionError:调用Python对象时超出最大递归深度
我该如何运作?
如果您可以提供不递归的解决方案,我也会很高兴获得。
您可以递归地调用该函数,d
而不是value
如果它是字典。
只需将其更改为:
if type(value) is dict:
f(value)
Run Code Online (Sandbox Code Playgroud)