用Python扩展JSON文件

用Python扩展JSON文件,python,json,file,merge,Python,Json,File,Merge,我在stackoverflow上查找了我的问题,有几种解决方案在我的案例中根本不起作用。 我想在json文件中添加一些新条目 我的json文件data.json: { "blabla1":"dubdub1", "blabla2":"dubdub2" } 使用extend方法的我的代码: 这给了我一个输出,比如: ['blabla1', 'blabla2', 'blabla3'] [{'blabla1': 'dubdub1', 'blabla2': 'dubdu

我在stackoverflow上查找了我的问题,有几种解决方案在我的案例中根本不起作用。 我想在json文件中添加一些新条目

我的json文件data.json:

{
        "blabla1":"dubdub1",
        "blabla2":"dubdub2"
}
使用extend方法的我的代码:

这给了我一个输出,比如:

['blabla1', 'blabla2', 'blabla3']
[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}, {'blabla3': 'dubdub3'}]
使用append方法的我的代码:

这给了我一个输出,比如:

['blabla1', 'blabla2', 'blabla3']
[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2'}, {'blabla3': 'dubdub3'}]
我最终需要的是:

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

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

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

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


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

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


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

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'}
这将产生您预期的结果:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}]
简要说明: 您调用的方法json.load创建了一个字典对象数据,如下所示:

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'}
然后,通过调用result.appenddata,您将数据字典添加为列表对象结果中的第一个公民:

每隔一次调用append方法时,您只需将另一个成员添加到列表中:

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

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

中所述,而无需对代码进行太多更改,您可以实现以下原始请求:

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'}
这将产生您预期的结果:

[{'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}]
简要说明: 您调用的方法json.load创建了一个字典对象数据,如下所示:

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'}
然后,通过调用result.appenddata,您将数据字典添加为列表对象结果中的第一个公民:

每隔一次调用append方法时,您只需将另一个成员添加到列表中:

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

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

中所述。为什么您想要一个只有1个元素的列表?你们真的想要一个用新键/值更新的字典吗?这是我发现的一个不适合我的解决方案。我对使用python或json文件没有太多经验。我只想在字典中添加新条目,然后稍后覆盖json文件,但我认为在没有帮助的情况下,应该可以在以后覆盖该文件。为什么您想要一个只有1个元素的列表?你们真的想要一个用新键/值更新的字典吗?这是我发现的一个不适合我的解决方案。我对使用python或json文件没有太多经验。我只想在字典中添加新条目,然后在以后覆盖json文件,但我认为在没有帮助的情况下可以在以后覆盖文件。因此,如果我想同时添加更多条目,我会使用for each循环在我要添加的字典中迭代我的键?要在1次调用中添加条目,您可以使用使现代化更新了应答器因此,如果我想同时添加更多条目,我会使用for each循环在我要添加的字典中迭代我的键?要在1次调用中添加条目,可以使用update。更新了答案