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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Функции map, filter и reduce
  2. Мониторинг памяти с Pympler
  3. Управление контекстом выполнения кода
  4. Метод __iand__ для пользовательских классов
  5. Тестирование с unittest
  6. Каналы Senior: Python, Java, Frontend, SQL, C++
  7. Оператор += для объединения строк
  8. Работа с zip-архивами в Python
  9. Метод join() для объединения строк
  10. Порядок и длина множеств в Python
  11. Monkey Patching в Python
  12. Конкатенация строк в Python
  13. Функции с необязательными аргументами
  14. Установка пакета в Python
  15. Модуль math: константы π и e
  16. UserList в Python: Описание и примеры использования
  17. Решатель судоку на Python с pygame
  18. Генераторы данных
  19. Работа с географическими данными.
  20. Создание директории в Python
  21. Изменение IP-адреса в Python
  22. Функция print() — вывод информации
  23. Форматирование строк в Python.
  24. Импорт модулей в Python 3.12
  25. Работа с Requests для HTTP-запросов
  26. Преобразование числа в список цифр
  27. Нан-рефлексивность в Python
  28. Безопасные SQL-запросы в Python 3.11
  29. Преобразование типов данных в set comprehension
  30. Функция enumerate() — Python
  31. inspect в Python: анализ кода
  32. Преобразование регистра символов
  33. Работа с кортежами
  34. Декораторы в Python
  35. Описание скриптов в README
  36. Установка переменной среды в Python
  37. Создание и использование ChainMap
  38. Быстрый поиск кода
  39. Модуль functools в Python
  40. Обработка исключения UnboundLocalError
  41. Функция enumerate в Python
  42. Модуль xkcd: добавление юмора в Python
  43. Автоматизация действий с Pyautogui
  44. Возвращение нескольких значений
  45. Вычисление натурального логарифма в NumPy
  46. Многострочные комментарии в Python
  47. Создание пользовательской коллекции в Python
  48. Переопределение метода len
  49. Участие в LP стейкинге Waves

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