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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Работа с дробями в Python
  2. F-строки в Python 3.8
  3. Объединение, распаковка и деструктуризация
  4. Импорт модулей в Python 3.12
  5. Импорт модулей и пакетов в Python
  6. Приоритет операций в Python
  7. Объединение словарей в Python
  8. Упрощение работы с JSON-данными в Python
  9. Логирование в Python
  10. Python enumerate() для работы с индексами
  11. Методы и функции в Python
  12. Удаление дубликатов в pandas
  13. Аннотации типов в Python
  14. Работа с процессами в Python
  15. Заказ карты Тинькофф Black
  16. Работа с collections.Counter
  17. Поиск всех индексов подстроки
  18. Удаление дубликатов с помощью множеств
  19. Асинхронный код в Python
  20. Защита данных в Python
  21. Объединение списков с помощью zip
  22. Визуализация пропусков данных
  23. Python: Фильтрация списков с помощью filter()
  24. Вывод переменной и строки в Python
  25. Форматирование строк в Python
  26. Проверка памяти объекта
  27. Переопределение метода __rshift__
  28. Создание и использование модулей в Python
  29. Искажение имен в Python
  30. Преобразование Excel в PDF с Spire.XLS
  31. Перегрузка операторов в Python
  32. Проверка однородности элементов списка
  33. Извлечение новостей с помощью newspaper3k
  34. Срезы в Numpy
  35. Метод append() для списка
  36. Проверка подстроки в строке с помощью in
  37. Метод get для словарей
  38. Принципы программирования
  39. Отправка POST запроса на сервер.
  40. Установка Python3.7 и PIP
  41. UserString в Python
  42. Логический оператор «and» в Python
  43. Ускорение кода с помощью векторизации
  44. Создание директории в Python
  45. Инверсия списка и строки в Python
  46. Модуль pprint
  47. Список переменных с %who

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