Я хочу объединить два вложенных дикта друг с другом , иногда они имеют одинаковое количество диктов в диктантах, иногда нет.
При объединении я хочу сохранить все в моем уже существующем. json файле и обновлять только новые измененные значения из моего примера dict dict_01
. Если ключевой или целый словарь не существует, я хочу добавить новый dict в dict, если скажем 'name_03' еще не существует.
import json
from pprint import pprint
json_filepath = 'database.json'
dict_01 = {"database": {"name_01": {"name": "name_01",
"count": 10,
"size": "3"},
"name_03": {"name": "name_01",
"count": 10,
"size": "3"}}}
with open(json_filepath, 'r', encoding="utf-8") as f:
data = json.load(f)
pprint(data)
Кажется, это только заменяет мой текущий диктат. Поэтому вся существующая информация удаляется. Не то, что мне нужно.
data.update(dict_01) # That doesn't do what I want it to do
with open(json_filepath, 'w+') as f:
json.dump(data)
Пример содержимого database.json
файла
{"database": {"name_01": {"count": 1,
"file_count": 1,
"folder_count": 0,
"hdd_master_name": "name_01_suffix",
"last_scanned": "14/04/20 15:55",
"name": "name_01",
"server_path": "root.txt",
"size": "0.18"},
"name_02": {"all_types_count": 4,
"file_count": 8,
"folder_count": 0,
"hdd_master_name": "name_02_suffix",
"last_scanned": "14/04/20 15:55",
"name": "name_02",
"server_path": "...",
"size": "50.34"}}}
Результат, который я ищу:
{"database": {"name_01": {"count": 10,
"file_count": 1,
"folder_count": 0,
"hdd_master_name": "name_01_suffix",
"last_scanned": "14/04/20 15:55",
"name": "name_01",
"server_path": "root.txt",
"size": "3"},
"name_02": {"all_types_count": 4,
"file_count": 8,
"folder_count": 0,
"hdd_master_name": "name_02_suffix",
"last_scanned": "14/04/20 15:55",
"name": "name_02",
"server_path": "...",
"size": "50.34"},
"name_03": {"name": "name_01",
"count": 10,
"size": "3"}}}