Перестановка ключей и значений в словаре

Используйте {value: key for key, value in data.items()}. Значения исходного словаря должны быть хешируемыми; повторяющиеся значения объединятся в один ключ.

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

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

Используйте {value: key for key, value in data.items()}. Значения исходного словаря должны быть хешируемыми; повторяющиеся значения объединятся в один ключ.

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

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

Условие

Дан словарь. Реализуйте программу, которая формирует новый словарь, поменяв местами его ключи и соответствующие им значения.

Пример 1: Ввод: {"a": 1, "b": 2, "c": 3} Вывод: {1: "a", 2: "b", 3: "c"}

Пример 2: Ввод: {"x": "hello", "y": "world"} Вывод: {"hello": "x", "world": "y"}

Ответ

Используйте {value: key for key, value in data.items()}. Значения исходного словаря должны быть хешируемыми; повторяющиеся значения объединятся в один ключ.

def invert(data):
    return {value: key for key, value in data.items()}

Для {'a': 1, 'b': 2} получится {1: 'a', 2: 'b'}. Если два исходных ключа имеют одинаковое значение, сохранится последний обработанный ключ. Поэтому такое преобразование обратимо только при уникальных значениях.

Если нужно сохранить все соответствия:

def invert_all(data):
    result = {}
    for key, value in data.items():
        result.setdefault(value, []).append(key)
    return result

Списки и словари в качестве значений нельзя напрямую превратить в ключи. Ожидаемая сложность обоих вариантов — O(n).

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

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

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

Подробнее