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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Определение функций с необязательными аргументами
  2. Распаковка значений в Python
  3. JSON в Python: модуль, dump, dumps, load
  4. Измерение времени выполнения кода
  5. Непрерывная проверка в Python
  6. Оператор морж в Python 3.8
  7. Python UserString — создание подклассов строк
  8. Ошибка NotImplemented в Python
  9. Создание уникального проекта
  10. Работа с модулем os в Python
  11. Хеширование паролей с использованием salt
  12. Метод join() для объединения элементов
  13. Получение значений из словарей
  14. Оператор is в Python
  15. Повторение элементов в Python
  16. Объединение словарей в Python
  17. Переворот последовательности
  18. Обмен переменными в Jupyter
  19. Метод get для словарей
  20. Генераторы в Python
  21. Создание namedtuple из словаря
  22. Python reversed() vs срез[::-1]
  23. Встраивание HTML в Jupyter Notebook
  24. Преобразование многоуровневого словаря
  25. Создание списков в Python
  26. Разделение строк методом split()
  27. Настройка вывода NumPy
  28. Создание Radio кнопок в tkinter
  29. Замена атрибута в именованном кортеже
  30. Работа с NumPy
  31. Оптимизация интернирования строк
  32. Подсчет количества элементов в списке
  33. Декораторы в Python
  34. Магические методы в Python
  35. Представление бесконечности в Python
  36. Изменение объектов в Python
  37. Работа со строками в Python
  38. Операции с кортежами
  39. Сравнение строк в Python
  40. Исключение NotImplementedError
  41. Библиотека sh: удобные команды терминала
  42. Структурирование данных с Pydantic
  43. Получение атрибутов и методов класса
  44. Официальный канал Python в Telegram
  45. Обработка исключений с блоком else
  46. 9 уловок для чистого кода
  47. Метод count() для списка

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