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

时间:2016-06-06 15:02:21

标签: python list dictionary nested

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

var result = (0.8149863M * 100).ToIntegerPercentage ();

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

data = {'services': {'web': {'name': 'x'}}, 'networks': {'prod': 'value'}}

我将上面的内容转换为索引列表{'services.web.name': 'new'} 。但是我无法/不确定如何在循环中执行以下操作:

['services', 'web', 'name']

这样我可以修改dict数据。我打算在上面的字典中改变其他值(它是广泛的),所以我需要一个解决方案,在我必须改变的情况下工作,EG:

data['services']['web']['name'] = new

有一种简单的方法吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以在移动引用时迭代键:

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