Курс Python → Уникальность ключей в словаре
В Python уникальность ключей в словаре определяется эквивалентностью, а не идентичностью. Это означает, что даже если два объекта разных типов равны друг другу, они не могут быть использованы в качестве ключей в словаре или множестве одновременно. Например, числа 5, 5.0 и 5 + 0j являются различными объектами разных типов, но они равны друг другу. Поэтому, если вы попытаетесь добавить их в словарь как ключи, только один из них будет сохранен, а остальные будут игнорироваться.
Когда вы пытаетесь найти значение по ключу в словаре, Python сначала проверяет эквивалентность ключей, а затем только идентичность. Это означает, что если вы используете ключ, который эквивалентен уже существующему ключу в словаре, но не идентичен ему, то Python найдет значение, связанное с существующим ключом, а не с новым. Это поведение позволяет избежать ошибок KeyError в случае использования эквивалентных ключей.
Пример кода:
my_dict = {5: 'пять', 5.0: 'пять', 5 + 0j: 'пять'}
print(my_dict) # Выведет: {5: 'пять'}
print(my_dict[5]) # Выведет: 'пять'
print(my_dict[5.0]) # Выведет: 'пять'
print(my_dict[5 + 0j]) # Выведет: 'пять'
В этом примере мы создаем словарь, в котором ключами являются различные объекты, но они эквивалентны друг другу. При обращении к словарю по любому из ключей, Python находит значение, связанное с первым ключом (5), так как все остальные ключи эквивалентны ему. Это демонстрирует, что в Python уникальность ключей в словаре определяется их эквивалентностью, а не идентичностью.
Другие уроки курса "Python"
- Имена объектов в Python
- Группы исключений в Python
- Лямбда-функции в defaultdict
- Объединение списков с использованием itertools.chain
- Форматирование строк в Python
- Транспонирование матрицы в Python
- Возвращение нескольких значений
- Проектирование Singleton с метаклассом
- Работа с парами ключ-значение
- Замена подстроки
- Основы работы с базами данных в Python
- Метод lt для сортировки объектов
- Перебор элементов списка в Python
- Отправка поздравлений по дню рождения
- Метод init в Python
- Оптимизация гиперпараметров в Python
- Разделение строк в Python
- Курс по дообучению ChatGPT
- Глобальные переменные в Python
- Python reversed() vs срез[::-1]
- Переопределение метода divmod
- Настройка логгера Logzero
- Дизассемблирование Python кода
- Генераторы в Python
- Python 3.12: переиспользование кавычек
- Извлечение данных из JSON
- Закрытие файла в Python
- Метод join для наборов
- Оператор (*) в Python
- Python Метод sleep() времени
- Получение текущей даты в Python
- Реверс строки и списка в Python.
- Поиск email
- Документирование функций в Python
- split() без разделителя
- Сравнение def и lambda в Python
- Работа с collections в Python.
- Метод Event.wait() в Python
- Безопасный доступ к значениям словаря
- Преобразование многоуровневого словаря
- Использование модуля __future__
- Добавление элемента к кортежу
- Проверка существования переменной с оператором :=
- Запуск файлового сервера
- Модуль subprocess: запуск внешних команд
- Оптимизация сравнения в Python















