用Python扩展JSON文件

2024-06-26 13:42:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在stackoverflow上查找了我的问题,有几种解决方案不适用于我的情况。
我想在json文件中添加一些新条目。你知道吗

我的json文件(数据.json)地址:

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

我的代码(使用扩展方法):

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'}]

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


Tags: 文件方法代码importjsondataresultfile
2条回答

在不改变代码的情况下,您可以实现如下原始请求:

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文件您调用创建了一个dictionary对象data,如下所示:

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

然后拨打结果.append(data)您将数据字典添加为列表对象结果中的第一个公民:

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

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

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

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

这更接近你想要的吗?用新的键和值更新的词典

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',
})

相关问题 更多 >