Сформируйте пары через 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.