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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Преобразование Excel в PDF с Spire.XLS
  2. Отладчик pdb: начало работы
  3. Сравнение объектов в Python
  4. Преобразование объекта в строку
  5. Установка пакета в Python
  6. Блок try…finally в Python
  7. Управление контекстом выполнения кода
  8. Оболочка Python
  9. Обучение модели с указанием эпох
  10. Форматирование даты с strftime()
  11. Операторы увеличения и уменьшения переменной
  12. Удаление дубликатов из списка с помощью dict.fromkeys
  13. Оптимизация памяти в Python
  14. Вычисление логарифмов в Python
  15. Контроль точности вывода чисел
  16. Хранение переменных в Python.
  17. Объединение списков в Python
  18. Работа с getopt
  19. Инициализация объекта
  20. Конкатенация строк в Python
  21. Создание графики с черепахой
  22. Python OrderedDict и fromkeys() — работа с словарями
  23. Тестирование функции сложения
  24. Оператор in в Python
  25. Анонимные функции в Python
  26. Списковое включение в Python
  27. Colorama: окрашивание текста в Python
  28. Определение наиболее частого элемента с помощью collections.Counter
  29. Работа с Event() в threading
  30. Замер времени выполнения кода
  31. Работа с очередями в Python
  32. Функции с необязательными аргументами
  33. inspect в Python: анализ кода
  34. Передача параметров в Python
  35. Форматирование чисел в Python
  36. Работа с CSV в Python
  37. Обход элементов в Python
  38. Инвертирование словаря
  39. Комплексные числа в Python
  40. Python Translator: создание локальных переводчиков
  41. Карта бомбоубежищ в Москве и Питере
  42. Преобразование строк в числа с плавающей запятой
  43. Создание словаря с значением по умолчанию
  44. Конкатенация строк с помощью join()
  45. Поиск анаграмм с Counter
  46. Базовые объекты Python
  47. Векторизация в Python с NumPy.
  48. Python Ellipsis использование
  49. Работа с комбинациями в Python.

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