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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. ROT13 Шифр Цезаря в Python
  2. Python Менеджер контекста
  3. Форматирование строк в Python
  4. Отправка POST запроса на сервер.
  5. Капитализация строк
  6. Поиск наиболее частого элемента списке
  7. Измерение времени выполнения в Python
  8. Срезы в Python
  9. Отображение HTML кода в Python
  10. Очистка данных с Pandas
  11. Списковое включение в Python
  12. %pinfo: получение информации об объекте
  13. Проверка памяти объекта
  14. Функция format() в Python
  15. Генераторы в Python
  16. Обмен переменными в Jupyter
  17. Создание множества в Python
  18. Генерация ключей RSA
  19. Генераторы по генератору
  20. Сравнение строк в Python
  21. Бесконечные списки в Python
  22. Базовые объекты Python
  23. Отправка HTTP-запросов в Python
  24. Python: отличительная особенность — отступы
  25. Генерация QR-кодов с библиотекой qrcode
  26. Получение имени функции с помощью inspect
  27. Декоратор total_ordering для класса Point
  28. Форматирование данных с pprint
  29. Кортеж в Python: создание, доступ, изменение
  30. Python: динамическая типизация и проверка типов
  31. Python-dateutil — работа с датами
  32. Удаление дубликатов из списка
  33. Декораторы в Python
  34. Логирование с Logzero
  35. Создание и использование ChainMap
  36. Обработка элементов в Python
  37. Перевод текста с Python Translator
  38. Метод join() для объединения элементов строки
  39. Поиск индекса элемента
  40. Оптимизация интернирования строк
  41. Цикл for в Python
  42. Использование модуля math
  43. Метод сравнения объектов в Python
  44. Генерация UUID в Python
  45. Работа с областями видимости переменных
  46. Просмотр файла в Jupyter Noteboo
  47. Оптимизация памяти с __slots__

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