Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- Работа с дробями в Python
- F-строки в Python 3.8
- Объединение, распаковка и деструктуризация
- Импорт модулей в Python 3.12
- Импорт модулей и пакетов в Python
- Приоритет операций в Python
- Объединение словарей в Python
- Упрощение работы с JSON-данными в Python
- Логирование в Python
- Python enumerate() для работы с индексами
- Методы и функции в Python
- Удаление дубликатов в pandas
- Аннотации типов в Python
- Работа с процессами в Python
- Заказ карты Тинькофф Black
- Работа с collections.Counter
- Поиск всех индексов подстроки
- Удаление дубликатов с помощью множеств
- Асинхронный код в Python
- Защита данных в Python
- Объединение списков с помощью zip
- Визуализация пропусков данных
- Python: Фильтрация списков с помощью filter()
- Вывод переменной и строки в Python
- Форматирование строк в Python
- Проверка памяти объекта
- Переопределение метода __rshift__
- Создание и использование модулей в Python
- Искажение имен в Python
- Преобразование Excel в PDF с Spire.XLS
- Перегрузка операторов в Python
- Проверка однородности элементов списка
- Извлечение новостей с помощью newspaper3k
- Срезы в Numpy
- Метод append() для списка
- Проверка подстроки в строке с помощью in
- Метод get для словарей
- Принципы программирования
- Отправка POST запроса на сервер.
- Установка Python3.7 и PIP
- UserString в Python
- Логический оператор «and» в Python
- Ускорение кода с помощью векторизации
- Создание директории в Python
- Инверсия списка и строки в Python
- Модуль pprint
- Список переменных с %who















