Курс Python → Хешируемые ключи в Python

Для того чтобы понять, как объекты становятся ключами словаря в Python, необходимо разобраться в понятии хеширования. Хеширование — это процесс преобразования данных произвольной длины в строку фиксированной длины. Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние, чтобы быть уникальными и идентифицируемыми при доступе к ним в словаре.

Одним из примеров нехешируемого объекта является кортеж, содержащий в себе неизменяемый объект, например, список. Поскольку список изменяемый, то и сам кортеж, содержащий список, становится нехешируемым. Поэтому такой кортеж не может быть использован в качестве ключа в словаре, так как ключи должны быть хешируемыми.


# Пример использования кортежа в качестве ключа словаря
my_dict = {(1, 2): 'значение'}
print(my_dict[(1, 2)])  # 'значение'

# Нехешируемый объект в кортеже
my_dict = {([1, 2], 3): 'значение'}  # Ошибка TypeError

Если необходимо использовать изменяемые объекты в качестве ключей словаря, можно воспользоваться другим типом данных, например, использовать словарь в качестве ключа. В этом случае необходимо быть осторожным при изменении значений ключа в словаре, чтобы не нарушить его уникальность и хешируемость.

Итак, для того, чтобы объект мог быть ключом словаря в Python, он должен быть хешируемым, то есть иметь неизменяемое состояние. При использовании кортежей в качестве ключей, убедитесь, что все элементы кортежа также являются хешируемыми объектами, чтобы избежать ошибок при работе со словарем.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Атрибуты класса и экземпляра
  2. Работа с асинхронными задачами в Python
  3. Сокращение ссылок с pyshorteners
  4. Поиск индекса элемента
  5. Избегание циклических зависимостей классов в Python
  6. JMESPath в Python
  7. Повторение элементов списков
  8. Работа с файлами в Python
  9. Метод rmatmul для пользовательских матриц
  10. Работа с изменяемыми списками
  11. Основные операции с библиотекой Numpy
  12. Работа с файловой системой в Python
  13. Основы работы с os
  14. Печать месячного календаря
  15. Оператор «or» в Python
  16. Работа с модулем glob в Python
  17. Удаление дубликатов из списка с помощью dict.fromkeys
  18. Логирование с Loguru
  19. Очистка вывода в Python
  20. Возврат нескольких значений из функции
  21. Работа с кортежами в Python
  22. Декораторы в Python
  23. Работа с комплексными числами
  24. Определение наиболее частого элемента с помощью collections.Counter
  25. Создание виртуальной среды
  26. Определение индекса элемента списка
  27. Управление асинхронными задачами с помощью Semaphore
  28. Работа с модулем cmath
  29. Работа с буфером обмена на Python
  30. Декораторы в Python
  31. Отображение графиков в Jupyter с Matplotlib
  32. Хешируемые ключи в Python
  33. Создание циклической ссылки
  34. Работа с необработанными строками
  35. Метод __getitem__ в Python
  36. Установка максимального количества цифр
  37. Модуль math: основные функции
  38. Функция enumerate в Python
  39. Конкатенация строк с join() в Python
  40. Функциональное программирование.
  41. Pillow: работа с изображениями
  42. Сравнение def и lambda функций в Python
  43. Работа с комбинациями в Python.

Marketello читают маркетологи из крутых компаний