我的 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
提交
取消