Создание функции merge_dicts без явной проверки наличия ключа

Используйте first_dict.setdefault(key, value): метод добавляет значение только при отсутствии ключа. Существующее значение, даже None или 0, останется неизменным.

Короткий ответ

Что ответить на собеседовании

Используйте first_dict.setdefault(key, value): метод добавляет значение только при отсутствии ключа. Существующее значение, даже None или 0, останется неизменным.

Подробный разбор

Ответ с пояснениями

Условие

Напишите функцию merge_dicts, которая объединяет два словаря: в первый словарь добавляются все пары ключ‑значение из второго, но только в том случае, если соответствующего ключа ещё нет в первом. При реализации не рекомендуется использовать оператор if для проверки присутствия ключа.

import json

def merge_dicts(first_dict: dict, second_dict: dict) -> dict:
    for key, value in second_dict.items():
        first_dict[key] = value
    return first_dict

if __name__ == "__main__":
    first_str, second_str = input().split(';')
    first_dict = json.loads(first_str)
    second_dict = json.loads(second_str)
    print(dict(sorted(merge_dicts(first_dict, second_dict).items())))

Ввод представляет собой две JSON‑строки, разделённые точкой с запятой. Программа должна вывести полученный словарь, отсортированный по ключам.

Ответ

Используйте first_dict.setdefault(key, value): метод добавляет значение только при отсутствии ключа. Существующее значение, даже None или 0, останется неизменным.

Исправленная функция изменяет первый словарь и возвращает его:

def merge_dicts(first_dict, second_dict):
    for key, value in second_dict.items():
        first_dict.setdefault(key, value)
    return first_dict

Оператор if не требуется. Обычный update или присваивание first_dict[key] = value перезаписали бы совпадающие ключи, что противоречит условию. json.loads нужно проверять на получение объектов-словарей; простой split(';') также не является надёжным форматом для произвольного JSON, если точка с запятой может встретиться внутри строки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее