Курс Python → Хешируемые ключи в Python
Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.
Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.
# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)]) # 'значение'
# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'} # Ошибка TypeError
Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.
Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.
Другие уроки курса "Python"
- Определение функций с необязательными аргументами
- Распаковка значений в Python
- JSON в Python: модуль, dump, dumps, load
- Измерение времени выполнения кода
- Непрерывная проверка в Python
- Оператор морж в Python 3.8
- Python UserString — создание подклассов строк
- Ошибка NotImplemented в Python
- Создание уникального проекта
- Работа с модулем os в Python
- Хеширование паролей с использованием salt
- Метод join() для объединения элементов
- Получение значений из словарей
- Оператор is в Python
- Повторение элементов в Python
- Объединение словарей в Python
- Переворот последовательности
- Обмен переменными в Jupyter
- Метод get для словарей
- Генераторы в Python
- Создание namedtuple из словаря
- Python reversed() vs срез[::-1]
- Встраивание HTML в Jupyter Notebook
- Преобразование многоуровневого словаря
- Создание списков в Python
- Разделение строк методом split()
- Настройка вывода NumPy
- Создание Radio кнопок в tkinter
- Замена атрибута в именованном кортеже
- Работа с NumPy
- Оптимизация интернирования строк
- Подсчет количества элементов в списке
- Декораторы в Python
- Магические методы в Python
- Представление бесконечности в Python
- Изменение объектов в Python
- Работа со строками в Python
- Операции с кортежами
- Сравнение строк в Python
- Исключение NotImplementedError
- Библиотека sh: удобные команды терминала
- Структурирование данных с Pydantic
- Получение атрибутов и методов класса
- Официальный канал Python в Telegram
- Обработка исключений с блоком else
- 9 уловок для чистого кода
- Метод count() для списка















