2016-07-28 3 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_info и updated_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

О, господа, огромное спасибо! –

+0

Добро пожаловать. Я также добавил ссылку на документацию, в которой говорится, что –

Смежные вопросы