我有一个嵌套的dict,具有不同级别的嵌套
dict1 = {
'A': {'a': 1},
'B': 2,
'C': {'c': 3},
'D': {'d': {'dd': 4}}
}
我想执行(例如)按键乘法。使用扁平字典,这很简单:
{k: v * 2 for k, v in dict.items()}
我怎样才能在上面的字典中做同样的事情?
您可以编写一个递归函数,将函数应用于它找到的所有非字典值:
def perform_func_on_values(d, func):
for k,v in d.items():
if isinstance(v, dict):
perform_func_on_values(v, func)
else:
d[k] = func(v)
dict1 = {
'A': {'a': 1},
'B': 2,
'C': {'c': 3},
'D': {'d': {'dd': 4}}
}
print(dict1)
perform_func_on_values(dict1, lambda val:val*2)
print(dict1)
输出:
{'A': {'a': 1}, 'B': 2, 'C': {'c': 3}, 'D': {'d': {'dd': 4}}}
{'A': {'a': 2}, 'B': 4, 'C': {'c': 6}, 'D': {'d': {'dd': 8}}}
看看这是如何就地更改。