首页 > 解决方案 > 如何更改嵌套字典中的值

问题描述

我需要更改嵌套字典中的值。考虑这本字典:

stocks = {
        'name': 'stocks',
        'IBM': 146.48,
        'MSFT': 44.11,
        'CSCO': 25.54,
        'micro': {'name': 'micro', 'age': 1}
    }

我需要遍历所有键并更改所有键的值name

stocks.name
stocks.micro.name

这些键需要更改。但是,我不知道事先要更改哪些键。所以,我需要遍历键并更改值。

例子

change_keys("name", "test")

输出

{
     'name': 'test',
     'IBM': 146.48,
     'MSFT': 44.11,
     'CSCO': 25.54,
     'micro': {'name': 'test', 'age': 1}
}

标签: python

解决方案


支持未知数量的嵌套级别的递归解决方案:

def change_key(d, required_key, new_value):
    for k, v in d.items():
        if isinstance(v, dict):
            change_key(v, required_key, new_value)
        if k == required_key:
            d[k] = new_value

stocks = {
    'name': 'stocks',
    'IBM': 146.48,
    'MSFT': 44.11,
    'CSCO': 25.54,
    'micro': {'name': 'micro', 'age': 1}
}


change_key(stocks, 'name', 'new_value')
print(stocks)
#  {'name': 'new_value', 
#  'MSFT': 44.11, 
#  'CSCO': 25.54,
#  'IBM': 146.48,
#  'micro': {'name': 'new_value', 
#            'age': 1}
#  }

推荐阅读