修改嵌套字典中的键以匹配位置

2024-04-27 02:50:11 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我运行一个GET到系统a,得到这个输出:

'{
  "comment": "A good object",
  "number": "1.1",
  "extra_stuff": {
        "extra_id": {"value": 100},
        "extra_name": {"value": "Test"},
        }
 }'

在发布到systemb之前,我需要翻译(并省略)某些键(但保留值)。我想从这个GET和translate中得到的只是嵌套的dictionary键(extra\ stuff中的键)和其中的一个。你知道吗

翻译:

mapping_dict = { 'extra_id': 'id' }
dict_to_post = { '#KEY extra_ID': #VALUE FROM extra_ID# :, 'name' : Test, 'other' : True }

我从这里的另一个问题得到了一个翻译字典键的函数:

def update_dict_keys(obj, mapping_dict):
    if isinstance(obj, dict):
        return {mapping_dict[k]: update_dict_keys(v, mapping_dict) for k, v in obj.iteritems()}
    else:

        return obj

但我不确定如何只将嵌套字典发送到该函数中,我似乎只将“main”字典放在那里。不知道最好的方法是什么。我还需要在另一篇文章中处理来自“主”词典的信息。你知道吗


Tags: 函数nametestidobjget字典value
2条回答

所以我发现我得到的回应已经被解码了!我遇到的问题是,解码后的响应是一个包含字典的列表。你知道吗

你确定,在{"value": "Test"}后面有一个,,因为这是无效的json,并且你的get响应看起来像json。你知道吗

如果这只是你在这里的一个错误,你可以 使用json.loads()从响应字符串获取字典:

import json

res = '{
    "comment": "A good object",
    "number": "1.1",
    "extra_stuff": {
            "extra_id": {"value": 100},
            "extra_name": {"value": "Test"}
    }
}'

# convert to dict
res_dict = json.loads(res)

# do your mapping
dict_to_post = { 'extra_id': res_dict['extra_stuff']['extra_id']['value']}

# dict_to_post is {'extra_id': 100} now

此外,我不明白你需要mapping_dict做什么。是否要将{id':100}作为结果?你知道吗

相关问题 更多 >