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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Метод join() для объединения элементов в строку.
  2. Работа с аргументами командной строки в Python
  3. Основные операции с Numpy
  4. Срезы в Numpy
  5. Функция all() в Python
  6. Кортеж в Python: создание, доступ, изменение
  7. Измерение времени выполнения кода
  8. Оптимизация гиперпараметров в Python
  9. UserString в Python
  10. Использование модуля math
  11. Обрезка изображения с Pillow
  12. Основы работы с os
  13. Измерение времени выполнения кода
  14. Расчет времени выполнения кода
  15. Строки в Python: апострофы и кавычки
  16. Создание файла с проверкой ошибки
  17. Python Метод sleep() из time
  18. Подсчет количества элементов в списке
  19. Удаление и повторная вставка ключа в OrderedDict
  20. Списковые включения в Python
  21. Метод matmul для умножения матриц
  22. Глобальные переменные в Python
  23. Цикл while в Python
  24. Разделение строки на подстроки в Python
  25. Python reversed() vs срез[::-1]
  26. Управление импортом в Python
  27. Конвертация коллекций в Python
  28. Преобразование текста в нижний регистр
  29. Нахождение максимального значения и его индекса в списке
  30. Генераторы списков в Python
  31. Обработка ошибок в Python
  32. Логирование в Python
  33. Генераторы в Python
  34. Сортировка HTML по CSS-селектору
  35. Генерация UUID в Python
  36. Получение текущего времени в Python
  37. Участие в LP стейкинге Waves
  38. Работа с пакетами
  39. Работа со стеком в Python
  40. Форматирование строк в Python
  41. Создание лямбда-функций
  42. Оценка выражений генератора в Python
  43. Python reversed() функция
  44. Компиляция регулярных выражений
  45. Concrete Paths — метод .with_suffix()

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