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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Синхронизация доступа к ресурсам
  2. Хэш-функции и метод цепочек
  3. Многострочные комментарии в Python
  4. Магические методы в Python
  5. Извлечение аудио из видео
  6. lru_cache оптимизация функций
  7. Переворот списка в Python
  8. Конкатенация строк с помощью join()
  9. Списковое включение в Python
  10. Concrete Paths — метод .with_suffix()
  11. Копирование объектов в Python
  12. Принцип одной функции
  13. f-строки в формате строк
  14. Создание обратного итератора
  15. Операции с матрицами в Python
  16. Оптимизация памяти с __slots__
  17. Подсчет элементов в списке с Counter
  18. Работа с каталогами в Python
  19. Циклы for в Python
  20. Профилирование с cProfile
  21. Работа со временем в Python
  22. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  23. Получение значений из словарей
  24. Фильтрация списка от «ложных» значений
  25. Создание класса в Python
  26. Создание виртуальной среды
  27. Преобразование числа в восьмеричную строку
  28. Обработка исключений в Python
  29. Расширение информации об ошибке в Python
  30. Сортировка списка по индексам
  31. Копирование объектов в Python
  32. Руководство по Pymorphy2
  33. Модуль os: работа с файлами и папками
  34. Структура данных deque в Python
  35. Регулярные выражения в Python
  36. Работа со строками в Python
  37. Оператор «not» в Python
  38. Проверка дубликатов в Python
  39. Списки в Python: основы
  40. Форматирование данных с pprint
  41. Метод join() для объединения элементов
  42. Участие в LP стейкинге Waves
  43. Присвоение и ссылки
  44. Определение объема памяти объекта
  45. Оформление кода на Python
  46. Переворот строки с использованием цикла
  47. Импорт с альтернативным именем
  48. Управление памятью в numpy.

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