Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用索引列表操作嵌套字典_Python_List_Dictionary_Nested - Fatal编程技术网

Python 使用索引列表操作嵌套字典

Python 使用索引列表操作嵌套字典,python,list,dictionary,nested,Python,List,Dictionary,Nested,我正在尝试对嵌套字典(从yaml文件检索的数据)执行操作: 我尝试使用以下输入来修改上述内容: {'services.web.name': 'new'} 我将上述内容转换为索引列表['services'、'web'、'name']。但我无法/不确定如何在循环中执行以下操作: data['services']['web']['name'] = new 这样我可以修改dict数据。我计划在上述字典中更改其他值(这是一个扩展的字典),因此我需要一个在我必须更改的情况下有效的解决方案,例如: dat

我正在尝试对嵌套字典(从yaml文件检索的数据)执行操作:

我尝试使用以下输入来修改上述内容:

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