如果我有一个字典,例如
d = { 'a': {
"x": [],
"y": {
"z": {
"1": 'loser'
}
}
}
}
print(d['a']['y']['z']['1']) #=> loser
然而,我不知道这个字典中有多少层嵌套的条目。相反,我有一组键值,如下所示:
['a', 'y', 'z', '1']
如何优雅地设置d['a']['y']['z']['1'] = 'winner'
?
这是我尝试过的方法:
l = ['a', 'y', 'z', '1']
def change_the_value(d, l, value):
if len(l) == 1:
d[l[0]] = value
if len(l) == 2:
d[l[0]][l[1]] = value
if len(l) == 3:
d[l[0]][l[1]][l[2]] = value
if len(l) == 4:
d[l[0]][l[1]][l[2]][l[3]] = value
# ... ad infinitum
return d
change_the_value(d, l, 'winner')
print(d) # => {'a': {'x': [], 'y': {'z': {'1': 'winner'}}}}
_start
中有对d
的引用。因此,对_start
的任何变异也将出现在d
中。 - Ajax1234