Практические решения и примеры
Инвертирование словаря с уникальными значениями
Вот пример инвертирования словаря с уникальными значениями:
original_dict = {
"apple": 1,
"banana": 2,
"cherry": 3
}
inverted_dict = {value: key for key, value in original_dict.items()}
print(inverted_dict) ## Вывод: {1: 'apple', 2: 'banana', 3: 'cherry'}
В этом примере мы используем словарное включение для создания нового словаря, где ключи и значения меняются местами.
Инвертирование словаря с дублирующимися значениями
При работе со словарем, имеющим дублирующиеся значения, мы можем использовать defaultdict
из модуля collections
для обработки процесса инвертирования:
from collections import defaultdict
original_dict = {
"apple": 1,
"banana": 2,
"cherry": 1,
"date": 2
}
inverted_dict = defaultdict(list)
for key, value in original_dict.items():
inverted_dict[value].append(key)
print(dict(inverted_dict)) ## Вывод: {1: ['apple', 'cherry'], 2: ['banana', 'date']}
В этом примере мы создаем defaultdict
с начальным значением в виде пустого списка. При итерации по исходному словарю мы добавляем ключи в список, связанный с соответствующим значением в инвертированном словаре.
Обработка дублирующихся значений с использованием Counter
Другой подход к инвертированию словаря с дублирующимися значениями - использование класса Counter
из модуля collections
. Это позволяет подсчитать количество вхождений каждого значения и затем создать инвертированный словарь соответственно.
from collections import Counter
original_dict = {
"apple": 1,
"banana": 2,
"cherry": 1,
"date": 2
}
counter = Counter(original_dict.values())
inverted_dict = {value: [key for key, v in original_dict.items() if v == value] for value in counter}
print(inverted_dict) ## Вывод: {1: ['apple', 'cherry'], 2: ['banana', 'date']}
В этом примере мы сначала создаем объект Counter
для подсчета количества вхождений каждого значения в исходном словаре. Затем мы используем словарное включение для создания инвертированного словаря, где ключи - это уникальные значения из исходного словаря, а значения - это списки соответствующих ключей.
Разбравшись в этих практических решениях и примерах, вы сможете эффективно инвертировать словари как с уникальными, так и с дублирующимися значениями в своих проектах на Python.