2016-07-28 98 views
0

我有兩個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文件,它僅包含「空值」。當我嘗試調試時,我打印出original_infoupdated_info,他們都很好。我可以打電話original_info.update(updated_info),這將產生一個正確更新的字典。但是,當它們全部組合在一起時,它僅僅因爲某種原因而不工作?

有什麼想法?

非常感謝!

+0

你不需要如使用'with' –

+0

@ cricket_007冷靜,感謝關閉文件! –

回答

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} 
+0

哦,geez非常感謝! –

+0

歡迎。我還添加了文檔的鏈接,這個鏈接也是如此 –