Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- Метод join() для объединения элементов в строку.
- Работа с аргументами командной строки в Python
- Основные операции с Numpy
- Срезы в Numpy
- Функция all() в Python
- Кортеж в Python: создание, доступ, изменение
- Измерение времени выполнения кода
- Оптимизация гиперпараметров в Python
- UserString в Python
- Использование модуля math
- Обрезка изображения с Pillow
- Основы работы с os
- Измерение времени выполнения кода
- Расчет времени выполнения кода
- Строки в Python: апострофы и кавычки
- Создание файла с проверкой ошибки
- Python Метод sleep() из time
- Подсчет количества элементов в списке
- Удаление и повторная вставка ключа в OrderedDict
- Списковые включения в Python
- Метод matmul для умножения матриц
- Глобальные переменные в Python
- Цикл while в Python
- Разделение строки на подстроки в Python
- Python reversed() vs срез[::-1]
- Управление импортом в Python
- Конвертация коллекций в Python
- Преобразование текста в нижний регистр
- Нахождение максимального значения и его индекса в списке
- Генераторы списков в Python
- Обработка ошибок в Python
- Логирование в Python
- Генераторы в Python
- Сортировка HTML по CSS-селектору
- Генерация UUID в Python
- Получение текущего времени в Python
- Участие в LP стейкинге Waves
- Работа с пакетами
- Работа со стеком в Python
- Форматирование строк в Python
- Создание лямбда-функций
- Оценка выражений генератора в Python
- Python reversed() функция
- Компиляция регулярных выражений
- Concrete Paths — метод .with_suffix()















