如何对嵌套字典值应用函数

问题描述 投票:0回答:1

我有一个嵌套的dict,具有不同级别的嵌套

dict1 = {
    'A': {'a': 1},
    'B': 2,
    'C': {'c': 3},
    'D': {'d': {'dd': 4}}
}

我想执行(例如)按键乘法。使用扁平字典,这很简单:

{k: v * 2 for k, v in dict.items()}

我怎样才能在上面的字典中做同样的事情?

python dictionary
1个回答
1
投票

您可以编写一个递归函数,将函数应用于它找到的所有非字典值:

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}}}

看看这是如何就地更改。

© www.soinside.com 2019 - 2024. All rights reserved.