Функция объединения двух списков в отсортированный словарь

Сформируйте пары через zip, затем словарь и пересоберите его по отсортированным ключам. Для разной длины явно выберите правило обработки лишних элементов.

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

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

Сформируйте пары через zip, затем словарь и пересоберите его по отсортированным ключам. Для разной длины явно выберите правило обработки лишних элементов.

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

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

Условие

Напишите функцию merge(), которая принимает два списка. Элементы первого списка должны стать ключами нового словаря, а соответствующие элементы второго списка – его значениями. Полученный словарь необходимо вернуть, упорядочив его по ключам. Учтите, что длина входных списков может различаться.

Ответ

Сформируйте пары через zip, затем словарь и пересоберите его по отсортированным ключам. Для разной длины явно выберите правило обработки лишних элементов.

Вариант с отбрасыванием непарного хвоста:

def merge(keys, values):
    mapping = dict(zip(keys, values))
    return {key: mapping[key] for key in sorted(mapping)}

zip останавливается на более коротком списке. Повторяющийся ключ получает последнее соответствующее значение до сортировки. В Python 3.7+ порядок вставки словаря сохраняется, поэтому обход результата будет идти по возрастанию ключей.

Ключи должны быть хешируемыми и взаимно сравнимыми для сортировки. Если потеря хвоста недопустима, вместо молчаливого усечения проверяйте равенство длин и поднимайте ValueError.

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

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

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

Подробнее