Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- JMESPath в Python
- Регистрация на курсы SF Education
- Итераторы с потерямиZIP
- Работа с модулем glob в Python
- Генератор чисел Фибоначчи
- Исправление ошибки NameError
- Работа с модулем Calendar
- Перевод текста с Python Translator
- Асинхронное программирование с asyncio
- Переопределение оператора % для объектов
- Ввод нескольких значений
- Генераторы данных
- OrderedDict — упорядоченный словарь
- Поиск индексов в списке
- Нахождение максимального значения и его индекса в списке
- Метод join для объединения строк
- Обмен переменными в Jupyter
- Виртуальные среды в Python
- Ошибка NotImplemented в Python
- Создание вложенных циклов for
- Перезагрузка оператора в Python
- Lambda Functions in Python
- Модуль os в Python: работа с файлами
- Python: цикл for и оператор присваивания
- Оператор continue в Python
- Работа с timedelta в Python
- Локальные переменные.
- Подсчет частоты элементов с Counter
- Преобразование списка в словарь через генератор
- Замена текста в Python
- Определение индекса элемента списка
- Метод difference_update() — разность множеств
- Измерение времени выполнения кода
- Участие в сообществе @selectel
- Добавление кнопки в tkinter
- *args и **kwargs в Python
- Лямбда-функции в цикле
- Генераторные функции в Python
- Замена переменных в Python
- Многопроцессорное программирование в Python
- Преобразование данных в Python
- Преобразование документов в PDF с помощью Spire.Office
- Фильтрация списка от «ложных» значений
- Работа с timedelta
- Именование столбцов в Python с pandas
- Управление памятью в Python















