无法更新json文件

时间:2016-07-28 17:34:17

标签: python json

我有两个json个文件。其中一个是字典,是另一个的子集。

json_file_1.json包含{'foo': 1, 'bar': 2, 'baz': 3}

json_file_2.json包含{'foo': 100, 'bar': 200}

我想创建一个具有以下内容的最终json文件:{'foo': 100, 'bar': 200, 'baz': 3}

这是我到目前为止所尝试的内容:

with open('json_file_1.json') as f1:
    original_info = json.load(f1)
f1.close()

with open('json_file_2.json') as f2:
    updated_info = json.load(f2)
f2.close()

print original_info  # prints the correct dictionary
print updated_info   # prints the correct dictionary

final_info = original_info.update(updated_info)

print final_info  # prints None

with open('json_file_final.json', 'w+') as f_final:
    json.dump(final_info, f_final)

但是,当我打开最终的json文件时,它只包含“Null”。当我尝试调试它时,我打印出original_infoupdated_info,它们都很好。我可以调用original_info.update(updated_info),这将生成一个已正确更新的字典。但是,当它全部放在一起时,它只是因某种原因而无法正常工作?

有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

dict.update就地更新字典并返回None

您需要转储original_info

供参考,

In [11]: d1 = {'foo': 1, 'bar': 2, 'baz': 3}

In [12]: d2 = {'foo': 100, 'bar': 200}

In [13]: d3 = d1.update(d2)

In [14]: d3

In [15]: print(d3)
None

In [16]: d1
Out[16]: {'bar': 200, 'baz': 3, 'foo': 100}