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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. JMESPath в Python
  2. Регистрация на курсы SF Education
  3. Итераторы с потерямиZIP
  4. Работа с модулем glob в Python
  5. Генератор чисел Фибоначчи
  6. Исправление ошибки NameError
  7. Работа с модулем Calendar
  8. Перевод текста с Python Translator
  9. Асинхронное программирование с asyncio
  10. Переопределение оператора % для объектов
  11. Ввод нескольких значений
  12. Генераторы данных
  13. OrderedDict — упорядоченный словарь
  14. Поиск индексов в списке
  15. Нахождение максимального значения и его индекса в списке
  16. Метод join для объединения строк
  17. Обмен переменными в Jupyter
  18. Виртуальные среды в Python
  19. Ошибка NotImplemented в Python
  20. Создание вложенных циклов for
  21. Перезагрузка оператора в Python
  22. Lambda Functions in Python
  23. Модуль os в Python: работа с файлами
  24. Python: цикл for и оператор присваивания
  25. Оператор continue в Python
  26. Работа с timedelta в Python
  27. Локальные переменные.
  28. Подсчет частоты элементов с Counter
  29. Преобразование списка в словарь через генератор
  30. Замена текста в Python
  31. Определение индекса элемента списка
  32. Метод difference_update() — разность множеств
  33. Измерение времени выполнения кода
  34. Участие в сообществе @selectel
  35. Добавление кнопки в tkinter
  36. *args и **kwargs в Python
  37. Лямбда-функции в цикле
  38. Генераторные функции в Python
  39. Замена переменных в Python
  40. Многопроцессорное программирование в Python
  41. Преобразование данных в Python
  42. Преобразование документов в PDF с помощью Spire.Office
  43. Фильтрация списка от «ложных» значений
  44. Работа с timedelta
  45. Именование столбцов в Python с pandas
  46. Управление памятью в Python

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