如何在各个级别更新json字典?

时间:2017-07-05 19:24:53

标签: python json dictionary

我需要帮助用变量键更新json - dictionary值。

以下是我所知道的工作和我遇到的问题。

让我说我这样做:

print(my_json['convergedSystem']['endpoints'][0]['credentials'][0]['credentialElements']['username'])

我找回迈克 现在,如果我这样做:

my_json['convergedSystem']['endpoints'][0]['credentials'][0]['credentialElements']['username'] = ‘Carol’

并做同样的印刷:

print(my_json['convergedSystem']['endpoints'][0]['credentials'][0]['credentialElements']['username'])

我回到卡罗尔

这就是我期望它发挥作用的方式。 问题是我并不总是知道上面的索引键是什么或者有多少......但是我可以得到它们的列表。 有时我可能需要更新

my_json['convergedSystem']['endpoints'][0]['credentials'][0]['credentialElements']['username']

其他时候它可能处于不同的水平

my_json['convergedSystem']['credentials'][0]['credentialElements']['username']

甚至

my_json['FullSystem'][switches]['endpoints'][2]['credentials'][0]['credentialElements']['username']

如何在代码中设置? 我将永远有一个列表可供我这样:

['convergedSystem', 'endpoints', 0, 'credentials', 0, 'credentialElements', 'username']

或者在那一刻发生的事情。 我知道我会一直在寻找[' credentialElements'] ['用户名']然而

1 个答案:

答案 0 :(得分:0)

假设您的json名称是 my_json ,并且您的列表被命名为 keys ,并且您希望将值更新为 your_updated_value

val = my_json  # val contains reference to your json
for key in keys[0:-1]:  # iterate till the second last level
    val = val[key]
val[keys[-1]] = your_updated_value  # update the value

请注意,由于val具有 my_json 的引用,因此它也会更新 my_json