Объединение словарей

У меня есть алгоритм объединения словарей:

dictA = json.loads(lessons)
dictB = json.loads(f.read())
merged_dict = {key: value for (key, value) in (dictA.items() + dictB.items())}
jsonString_merged = merged_dict

И он объединяет таким образом, что переписывает уже существующие значения из lessons в файл. И мне нужна помощь с переделыванием алгоритма таким образом, чтобы он только добавлял значения, но не переписывал старые. Пример:

# Входные данные
dict1 = {"a": {}, "b": "tmp"}
dict2 = {"a": "another_tmp"}
# Результат
result = {"a": "another_tmp", "b": "tmp"}
# По факту к dict2 добавили все значения кроме "a", т.к. оно уже существует.

Ответы (4 шт):

Автор решения: Zhihar

попробуйте такой вариант :)

dict3 = {**dict1, **{key: value for key, value in dict2.items() if key not in dict1}}
→ Ссылка
Автор решения: Qwertiy
(dictA.items() + dictB.items())

А просто поменять их местами - не вариант?

(dictB.items() + dictA.items())

А если временно, то можно вообще костыль приделать

(dictA.items() + dictB.items() + dictA.items())
→ Ссылка
Автор решения: vadim vaduxa
def exp(*dicts, out=None):
    if out is None:
        out = {}
    for dt in dicts:
        for k in dt.keys() - out.keys():
            out[k] = dt[k]
    return out

dict1 = {"a": {}, "b": "tmp"}
dict2 = {"a": {}, "c": "tmp"}
dict3 = {"a": "another_tmp"}
print(exp(dict3, dict2, dict1))  # {'a': 'another_tmp', 'c': 'tmp', 'b': 'tmp'}
→ Ссылка
Автор решения: Михаил Муругов
dictA = json.loads(lessons)  # Тот, значения которого хотим сохранить
dictB = json.loads(f.read())  # Тот, значения которого хотим вставить

merged_dict = {**dictB, **dictA}
# Сначала распаковываем словарь "добавочных" значений
# Затем распаковываем словарь "сохраняемых" значений, перетирая предыдущее при коллизии
→ Ссылка