我的 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 jsonkey1 ='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'
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
它应该是这样的:
jsonData['Person1']['Place'] = 'Rome'
字典确实没有 append 方法。只有列表可以。
或者使用 Python 3,您可以这样做:
jsonData['Person1'].update(PersonBUpdate)
ibeautiful
TA贡献1993条经验 获得超6个赞
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']}}添加回答
举报
0/150
提交
取消
