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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Работа с коллекциями Python
  2. Обновление и получение данных в SQLite
  3. Освобождение памяти в Python
  4. Установка и использование pyshorteners
  5. List Comprehension Tutorial
  6. Множественное назначение в Python
  7. Курс Data Scientist в медицине
  8. Участие в LP стейкинге Waves
  9. Функция enumerate в Python
  10. Обязательные аргументы в Python
  11. Переменная с нижним подчеркиванием
  12. Многоточие в Python
  13. Создание лямбда-функций
  14. Анонимные функции в Python
  15. Метод __getitem__ в Python
  16. Анонимные функции Lambda
  17. Оператор деления для класса Rational
  18. Список и кортеж в Python
  19. Работа с массивами в Numpy
  20. Метод rename() для переименования файлов и каталогов
  21. Избегайте изменяемых аргументов
  22. Python reversed() функция
  23. Нахождение максимального значения и его индекса в списке
  24. Работа с YAML в Python
  25. Solidity для DeFi Ethereum
  26. Генераторы в Python
  27. Лимиты на ресурсы Python
  28. Ускоренный импорт библиотек
  29. Работа со строками в Python
  30. Работа с кортежами в Python
  31. Символ подчеркивания в Python
  32. Изменение регистра данных
  33. Работа с аргументами командной строки в Python
  34. Проверка дубликатов в Python
  35. Слияние словарей в Python 3.9
  36. Python: динамическая типизация и проверка типов
  37. Работа с argparse
  38. Измерение времени выполнения кода
  39. Перебор элементов списка в Python
  40. Подсчет элементов в Python
  41. Бесконечные списки в Python
  42. Python: библиотеки и функции
  43. Создание веб-приложения с Flask

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