Используйте {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).