Python 使用索引列表操作嵌套字典
我正在尝试对嵌套字典(从yaml文件检索的数据)执行操作: 我尝试使用以下输入来修改上述内容:Python 使用索引列表操作嵌套字典,python,list,dictionary,nested,Python,List,Dictionary,Nested,我正在尝试对嵌套字典(从yaml文件检索的数据)执行操作: 我尝试使用以下输入来修改上述内容: {'services.web.name': 'new'} 我将上述内容转换为索引列表['services'、'web'、'name']。但我无法/不确定如何在循环中执行以下操作: data['services']['web']['name'] = new 这样我可以修改dict数据。我计划在上述字典中更改其他值(这是一个扩展的字典),因此我需要一个在我必须更改的情况下有效的解决方案,例如: dat
{'services.web.name': 'new'}
我将上述内容转换为索引列表['services'、'web'、'name']
。但我无法/不确定如何在循环中执行以下操作:
data['services']['web']['name'] = new
这样我可以修改dict数据。我计划在上述字典中更改其他值(这是一个扩展的字典),因此我需要一个在我必须更改的情况下有效的解决方案,例如:
data['services2']['web2']['networks']['local'].
有没有一个简单的方法可以做到这一点?非常感谢您的帮助。移动引用时,您可以在键上迭代:
data = {'networks': {'prod': 'value'}, 'services': {'web': {'name': 'x'}}}
modification = {'services.web.name': 'new'}
for key, value in modification.items():
keyparts = key.split('.')
to_modify = data
for keypart in keyparts[:-1]:
to_modify = to_modify[keypart]
to_modify[keyparts[-1]] = value
print(data)
给予:
{'networks': {'prod': 'value'}, 'services': {'web': {'name': 'new'}}}
令人惊叹的。经过一些修改,我可以让它工作了!谢谢你的帮助。
{'networks': {'prod': 'value'}, 'services': {'web': {'name': 'new'}}}