使用Python扩展JSON文件

yc0p9oo0  于 2023-02-06  发布在  Python
关注(0)|答案(2)|浏览(127)

我在stackoverflow上查找了我的问题,有几种解决方案对我的问题都不起作用。
我想在我的json文件中添加一些新条目。
我的json文件(data.json):

{
        "blabla1":"dubdub1",
        "blabla2":"dubdub2"
}

我的代码(使用extend方法):

import json

with open('data.json') as json_data_file:
    data = json.load(json_data_file)
result = list()

result.extend(data)
result.extend({'blabla3': 'dubdub3'})
data = result

print(data)

它会给出如下输出:

['blabla1', 'blabla2', 'blabla3']

我的代码(使用append方法):

import json

with open('data.json') as json_data_file:
    data = json.load(json_data_file)
result = list()

result.append(data)
result.append({'blabla3': 'dubdub3'})
data = result

print(data)

它会给出如下输出:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}, {'blabla3': 'dubdub3'}]

我最后需要的是:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}]

那么我哪里错了呢?很抱歉,如果同样的问题已经得到了回答,但我找不到适合我的东西。谢谢!

icomxhvb

icomxhvb1#

无需对代码做太多修改,就可以实现最初的请求,如下所示:

import json

with open('data.json') as json_data_file:
    data = json.load(json_data_file)

data.update({'blabla3': 'dubdub3'})
result = [data]

print(result)

这将产生您预期的结果:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}]

简短说明:

您调用的方法 json.load 创建了一个字典对象 data,如下所示:

{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}

然后通过调用 result.append(data),将 data 字典添加为列表对象 result 中的第一个成员:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}]

每隔一次调用 append() 方法时,只需向列表中添加另一个成员:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}, obj2, obj3, ...]

相反,您似乎希望向数据字典添加另一个键-值对,如previous answer中所述

7gs2gvoe

7gs2gvoe2#

这是否更接近您想要的结果?使用新键和值更新的字典

import json

with open('data.json') as json_data_file:
    data = json.load(json_data_file)
data['blabla3'] = 'dubdub3'
print(data)  # {'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}

编辑:
要同时更新多个条目,可以使用update

data.update({
    'blabla3': 'dubdub3',
    'blabla4': 'dubdub4',
})

相关问题