Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- Функции map, filter и reduce
- Мониторинг памяти с Pympler
- Управление контекстом выполнения кода
- Метод __iand__ для пользовательских классов
- Тестирование с unittest
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Оператор += для объединения строк
- Работа с zip-архивами в Python
- Метод join() для объединения строк
- Порядок и длина множеств в Python
- Monkey Patching в Python
- Конкатенация строк в Python
- Функции с необязательными аргументами
- Установка пакета в Python
- Модуль math: константы π и e
- UserList в Python: Описание и примеры использования
- Решатель судоку на Python с pygame
- Генераторы данных
- Работа с географическими данными.
- Создание директории в Python
- Изменение IP-адреса в Python
- Функция print() — вывод информации
- Форматирование строк в Python.
- Импорт модулей в Python 3.12
- Работа с Requests для HTTP-запросов
- Преобразование числа в список цифр
- Нан-рефлексивность в Python
- Безопасные SQL-запросы в Python 3.11
- Преобразование типов данных в set comprehension
- Функция enumerate() — Python
- inspect в Python: анализ кода
- Преобразование регистра символов
- Работа с кортежами
- Декораторы в Python
- Описание скриптов в README
- Установка переменной среды в Python
- Создание и использование ChainMap
- Быстрый поиск кода
- Модуль functools в Python
- Обработка исключения UnboundLocalError
- Функция enumerate в Python
- Модуль xkcd: добавление юмора в Python
- Автоматизация действий с Pyautogui
- Возвращение нескольких значений
- Вычисление натурального логарифма в NumPy
- Многострочные комментарии в Python
- Создание пользовательской коллекции в Python
- Переопределение метода len
- Участие в LP стейкинге Waves















