python - 如何更改嵌套字典中的值
问题描述
我需要更改嵌套字典中的值。考虑这本字典:
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}
}
解决方案
支持未知数量的嵌套级别的递归解决方案:
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}
# }
推荐阅读
- javascript - 二和 Leetcode 解释、Hashmap、Javascript
- javascript - 删除javascript中的文件上传选项不起作用
- python - Python Regex在关键字后获取括号内外的数字
- mysql - 使用nodejs将excel表上传到MySQL时如何忽略第一行?
- python - alien_invision 游戏,不能射击
- laravel - sass map-get 无法获取在不同文件中声明的变量的值
- windows - 如何拦截程序执行或文档打开
- android - 如何在android上打开android应用程序时重置徽章计数
- python - 在链接中查找子字符串
- maven - 即使在 pom.xml 中有 dependencyManagement 也无法删除版本标签