亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號