Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- Оператор is в Python
- Новшества Flask 2.0
- Метод clear для коллекций
- PEP-401: оператор
- Итераторы с потерямиZIP
- Метаклассы в Python
- Создание графики с черепахой
- Codecademy в Telegram
- lru_cache оптимизация функций
- Непрерывная проверка в Python
- Преобразование строк в числа в Python
- Получение текущей директории
- Ключевое слово global в Python
- Получение имени функции с помощью inspect
- Аннотации типов в Python
- Получение комбинаций в Python
- Метод gt в Python
- Синтаксис переменных цикла в Python
- Переопределение метода __rshift__
- Представление бесконечности в Python
- Работа с итераторами в Python
- Изучение объектов с помощью dir()
- Сортировка и обратный порядок
- Декоратор для группы пользователей в Django
- Официальный канал Python в Telegram
- Отображение графиков в Jupyter с Matplotlib
- Декоратор Ajax required
- Хранение данных с помощью dataclasses
- Создание namedtuple из словаря
- Скрытие вывода данных
- Создание функций высшего порядка
- Объединение словарей в Python 3.5+
- Упрощение условных выражений с тернарным оператором
- Очистка списка от False, None, 0, «»
- Оператор деления для класса Rational
- Срезы в Numpy
- Удаление элемента из списка в Python
- Обновление множества в Python
- Удаление дубликатов из списка
- Подсчет часто встречающихся элементов
- Основы работы со списками
- Подписка на каналы разработчиков
- Подчеркивание в REPL
- Управление виртуальными средами в Python
- Проверка существования переменной с оператором :=















