如何在python中更新json密钥名

2024-09-27 20:15:17 发布

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

我想更新json文件中的密钥名,文件中的对象如下所示:

[{"marka": "تويوتا" , "tag" : "MANF"},
{"marka": "شيفروليه" , "tag" : "MANF"},
{"marka": "نيسان" , "tag" : "MANF"}]

我想将键名“marka”更改为“entity”,因此它将是这样的:

[{"entity": "تويوتا" , "tag" : "MANF"},
 {"entity": "شيفروليه" , "tag" : "MANF"},
 {"entity": "نيسان" , "tag" : "MANF"}]

这是我尝试过的代码,但它给出了一个错误:

import json
with open("haraj_marka_arabic.json", "r") as jsonFile:
     data = json.load(jsonFile)

for d in data:
    d["entity"] = d.pop("marka")

with open("haraj_marka_arabic.json", "w") as jsonFile:
    json.dump(data, jsonFile)

错误是:

File "marka.py", line 8, in d["entity"] = d.pop("marka") KeyError: 'marka'


Tags: 文件injsondataastag错误with
3条回答

我认为您可能需要一个循环:

for json_elem in json_obj:
    json_elem["entity"] = json_elem.pop("marka")

pop将删除该元素

输出:

[{'tag': 'MANF', 'entity': 'تويوتا'},
 {'tag': 'MANF', 'entity': 'شيفروليه'},
 {'tag': 'MANF', 'entity': 'نيسان'}]

像这样的东西会有用的。我们将json读入一个对象。迭代元素列表,通过从字典中弹出键并将其分配给实体键,将键从“marka”更改为“entity”

import json
string = '[{"marka": "تويوتا" , "tag" : "MANF"}, {"marka": "شيفروليه" , "tag" : "MANF"}, {"marka": "نيسان" , "tag" : "MANF"}]'
jsonObj = json.loads(string)
for elem in jsonObj:
    elem['entity'] = elem.pop('marka')
print(jsonObj)

您可以创建字典键的映射:

map_this = {'marka': 'entity'}

现在使用字典将旧键映射到新键:

{map_this.get(k, k): v for k, v in old_dict.items()}

语法map_this.get(k, k)如果存在,则返回map_this[k],否则返回k本身


从技术上讲,这将创建一个新的词典,而不是修改旧词典

相关问题 更多 >

    热门问题