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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Оператор is в Python
  2. Новшества Flask 2.0
  3. Метод clear для коллекций
  4. PEP-401: оператор
  5. Итераторы с потерямиZIP
  6. Метаклассы в Python
  7. Создание графики с черепахой
  8. Codecademy в Telegram
  9. lru_cache оптимизация функций
  10. Непрерывная проверка в Python
  11. Преобразование строк в числа в Python
  12. Получение текущей директории
  13. Ключевое слово global в Python
  14. Получение имени функции с помощью inspect
  15. Аннотации типов в Python
  16. Получение комбинаций в Python
  17. Метод gt в Python
  18. Синтаксис переменных цикла в Python
  19. Переопределение метода __rshift__
  20. Представление бесконечности в Python
  21. Работа с итераторами в Python
  22. Изучение объектов с помощью dir()
  23. Сортировка и обратный порядок
  24. Декоратор для группы пользователей в Django
  25. Официальный канал Python в Telegram
  26. Отображение графиков в Jupyter с Matplotlib
  27. Декоратор Ajax required
  28. Хранение данных с помощью dataclasses
  29. Создание namedtuple из словаря
  30. Скрытие вывода данных
  31. Создание функций высшего порядка
  32. Объединение словарей в Python 3.5+
  33. Упрощение условных выражений с тернарным оператором
  34. Очистка списка от False, None, 0, «»
  35. Оператор деления для класса Rational
  36. Срезы в Numpy
  37. Удаление элемента из списка в Python
  38. Обновление множества в Python
  39. Удаление дубликатов из списка
  40. Подсчет часто встречающихся элементов
  41. Основы работы со списками
  42. Подписка на каналы разработчиков
  43. Подчеркивание в REPL
  44. Управление виртуальными средами в Python
  45. Проверка существования переменной с оператором :=

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