为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2022-10-18 17:12:06
我的 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)


查看完整回答
反对 回复 2022-10-18
?
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']}}



查看完整回答
反对 回复 2022-10-18
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号