猿问

在python中更新/附加到json(嵌套)

我的 JSON 文件如下所示


{

    "PersonA": {

        "Age": "35",

        "Place": "Berlin",

        "cars": ["Ford", "BMW", "Fiat"]

    },


    "PersonB": {

        "Age": "45",

        "Cars": ["Kia", "Ford"]

    },


    "PersonC": {

        "Age": "55",

        "Place": "London"

    }

}

我正在尝试更新此 json 中的某些条目,例如设置Place为PersonB类似Rome地使用数组 ["Hyundai", "Ford"]`进行PersonC更新cars


我到目前为止所做的是


import json


key1 ='PersonB'

key2 = 'PersonC'

filePath = "resources/test.json"

with open(filePath, encoding='utf-8') as jsonFile:

    jsonData = json.load(jsonFile)

    print(jsonData)


PersonBUpdate = {"Place" : "Rome"}

PersonCUpdate = {"cars" : ["Hyundai", "Ford"]}


jsonData[key1].append(PersonBUpdate)

jsonData[key2].append(PersonCUpdate)

print(jsonData)

它抛出一个错误。


AttributeError: 'dict' object has no attribute 'append'


心有法竹
浏览 175回答 2
2回答

慕莱坞森

它应该是这样的:jsonData['Person1']['Place'] = 'Rome'字典确实没有 append 方法。只有列表可以。或者使用 Python 3,您可以这样做:jsonData['Person1'].update(PersonBUpdate)

ibeautiful

list.append是类型的方法list,不是dict。始终确保查看完整的方法签名以了解方法所属的类型。相反,我们可以使用dict.update:使用其他键/值对更新字典,覆盖现有键。返回无。update() 接受另一个字典对象或键/值对的可迭代对象(作为元组或其他长度为 2 的可迭代对象)。如果指定了关键字参数,则使用这些键/值对更新字典:d.update(red=1, blue=2)。并在您的代码中使用此方法,如下所示:jsonData[key1].update(PersonBUpdate) jsonData[key2].update(PersonCUpdate)这给出了预期的结果:{'PersonA': {'Age': '35', 'Place': 'Berlin', 'cars': ['Ford', 'BMW', 'Fiat']}, 'PersonB': {'Age': '45', 'Cars': ['Kia', 'Ford'], 'Place': 'Rome'}, 'PersonC': {'Age': '55', 'Place': 'London', 'cars': ['Hyundai', 'Ford']}}
随时随地看视频慕课网APP

相关分类

Python
我要回答