gpt4 book ai didi

python - 更新字典的字典内的值

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:49 25 4
gpt4 key购买 nike

我有一个字典,其中包含向站点发出 POST 请求并获取数据的信息。下面是我的字典

request_dict = {
"scope_id": "user1",
"tool_id": "appdynamics",
"api_id": "get metrics names",
"input_params": {"user": "abcd", "pwd": "1234", "acc_id": "ab12", "app_id": "TestApp",
"metric-path": "ars",
"time-range-type": "BEFORE_NOW", "duration-in-mins": 10},
"output_filters": null
}

我有另一个字典,其中包含上述字典中提到的一些键的更新值。下面是字典

new_metric_dict = {'tool_id': 'appdynamics', 'pwd': '5678', 'user': 'efgh', 'metric-path': 'ars', 'app_id': 'TestApp', 'acc_id': 'cd34'}

如您所见,我获得了 user、pwd 和 acc_id 的新值。但是我无法将这些值放入 POST 请求字典中,因为它们位于 input_params 内。

我尝试做这样的事情

for i in request_dict:
if type(request_dict[i]) == dict:
for j in request_dict:
if j in new_metric_dict:
request_dict[j] = new_metric_dict[j]
if i in new_metric_dict:
request_dict[i] = new_metric_dict[i]

但这不起作用。实现此目标的有效方法是什么?

最佳答案

这是一种方法,它创建具有所需更新的新字典。

def update_dict(d, new):
out = {}
for m, val in d.items():
if isinstance(d[m], dict):
out[m] = {k: new.get(k, d[m][k]) for k, v in d[m].items()}
else:
out[m] = new.get(m, val)
return out

new = update_dict(request_dict, new_metric_dict)

# {'api_id': 'get metrics names',
# 'input_params': {'acc_id': 'cd34',
# 'app_id': 'TestApp',
# 'duration-in-mins': 10,
# 'metric-path': 'ars',
# 'pwd': '5678',
# 'time-range-type': 'BEFORE_NOW',
# 'user': 'efgh'},
# 'output_filters': 'null',
# 'scope_id': 'user1',
# 'tool_id': 'appdynamics'}

关于python - 更新字典的字典内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com