Введение
Словари - это фундаментальная структура данных в Python, которая позволяет хранить пары ключ-значение. Иногда вам может потребоваться инвертировать словарь, что означает обмен ключей и значений так, чтобы значения стали ключами, а ключи - значениями. В этом испытании вам предстоит написать функцию, которая инвертирует словарь с неуникальными хэшируемыми значениями.
Инвертировать словарь
Напишите функцию invert_dictionary(obj), которая принимает на вход словарь obj и возвращает новый словарь с инвертированными ключами и значениями. Входной словарь будет иметь неуникальные хэшируемые значения. Если два или более ключей имеют одно и то же значение, функция должна добавить ключи в список в выходном словаре.
Для решения этой проблемы вы можете следовать следующим шагам:
- Создайте
collections.defaultdictсlistв качестве значения по умолчанию для каждого ключа. - Используйте
dictionary.items()в сочетании с циклом, чтобы сопоставить значения словаря с ключами с использованиемdict.append(). - Используйте
dict()для преобразованияcollections.defaultdictв обычный словарь.
Подпись функции: def invert_dictionary(obj: dict) -> dict:
from collections import defaultdict
def collect_dictionary(obj):
inv_obj = defaultdict(list)
for key, value in obj.items():
inv_obj[value].append(key)
return dict(inv_obj)
ages = {
'Peter': 10,
'Isabel': 10,
'Anna': 9,
}
collect_dictionary(ages) ## { 10: ['Peter', 'Isabel'], 9: ['Anna'] }
Резюме
В этом испытании вы узнали, как инвертировать словарь с неуникальными хэшируемыми значениями. Вы использовали collections.defaultdict с list в качестве значения по умолчанию для каждого ключа, а затем сопоставили значения словаря с ключами с использованием dict.append(). Наконец, вы использовали dict() для преобразования collections.defaultdict в обычный словарь.