在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 对于 PersonBRome 同样 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']}}

给TA打赏
共{{data.count}}人
人已打赏
解决方案

从多个客户端保存数据到一个文件的问题。TCP Python

2022-4-20 13:08:45

解决方案

类外功能重载未见

2022-4-20 13:08:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索