通过在python中添加新属性更新json对象

2024-09-27 20:16:09 发布

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

我不熟悉python和json文件,我有一个json文件,它只有一个属性,我想通过添加一个新属性来更新文件中的每个对象,我的json文件如下所示:

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

我希望它是这样的:

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

我尝试了此代码,但它给了我一个错误:

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

tmp = data["tag"]
data["tag"] = "MANF"

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

我的错误是:

TypeError: list indices must be integers, not str


Tags: 文件对象jsondata属性astag错误
3条回答

您的JSON文件包含一个字典列表,要从您可以使用的data列表中更新每个dict,请执行以下操作:

for d in data:
    d['tag'] = "MANF"

然后可以将data转储到文件:

with open("haraj_marka_arabic.json", "w") as jsonFile:
    json.dump(data, jsonFile)
### given this is your sample object (Dictionary):
  data = [
         {"marka": "تويوتا"},
         {"marka": "شيفروليه"},
         {"marka": "نيسان"}
         ]
##end of sample object (Dictionary)

with open("haraj_marka_arabic.json", "r") as jsonFile: ## Assume data contains the object (dictionary) above
     data = json.load(jsonFile)

您的错误在这里:您的数据结构是一个数组(列表)对象(字典),您正在访问“跳过数组(列表)”

for tmp in data:
 tmp["tag"] = "MANF"


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

后期编辑以反映Python和JSON之间不同的术语选择

JSON是一个字典列表(用Python语言),每个字典都包含'tag'元素,因此需要迭代这些列表项并将新值分配给这个'tag'键:

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

for d in data:
    d["tag"] = "MANF"

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

相关问题 更多 >

    热门问题