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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Освоение Python
  2. TON Smart Challenge #2: участие и подготовка
  3. Конвертация коллекций в Python.
  4. Динамическая типизация в Python
  5. Добавление Progressbar в Python
  6. Аргумент по умолчанию
  7. Модуль array: создание и использование массивов
  8. Создание копии списка в Python
  9. Метод Enumerate() для списков
  10. Управление пакетами с pip
  11. Работа с defaultdictами в Python
  12. Создание словаря и множества
  13. Создание пар из последовательностей
  14. Работа с пользовательским вводом
  15. Принципы SRP и OCP
  16. GitHub в Telegram: подписка на уведомления
  17. Метод join() для объединения элементов строки
  18. Обновление и получение данных в SQLite
  19. Эффективная конкатенация строк с использованием join()
  20. Печать месячного календаря
  21. Бесконечная проверка в Python
  22. Работа с модулем bisect
  23. Методы list в Python
  24. Работа со словарями Python
  25. Python union() функция — объединение множеств
  26. Декораторы с аргументами в Python
  27. Класс UserDict: дополнительная функциональность
  28. Игра «Виселица» на Python
  29. Срезы в Python
  30. Antigravity модуль
  31. Функция eval() в Python
  32. Управление IP-адресами через прокси
  33. F-строки в Python
  34. Копирование файлов с shutil()
  35. Запуск внешних программ с subprocess
  36. Метод join для объединения строк
  37. Преобразование чисел в Python
  38. Форматирование строк в Python
  39. Многострочные строки в Python
  40. Функция rsplit() в Python
  41. Проверка индексов коллекции
  42. Codecademy в Telegram
  43. PUT запрос для обновления данных

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