在python中更新添加到json(嵌套)。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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
同样 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'
答案
list.append
是一种类型的方法 list
,不 dict
. 请务必查看完整的方法签名,以确定一个方法属于什么类型。
相反,我们可以使用 dict.update
:
用其他键值对更新字典,覆盖现有键值。返回 None。
update() 接受另一个 dictionary 对象或键值对的迭代(作为长度为 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']}}
另一答案
应该是这样的
jsonData['Person1']['Place'] = 'Rome'
Dictionary确实没有append方法. 只有列表才有。
或者用Python 3你可以这样做。
jsonData['Person1'].update(PersonBUpdate)
以上是关于在python中更新添加到json(嵌套)。的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 数组嵌套到 Python Pandas DataFrame