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

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

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


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

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

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

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

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

Автор урока

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

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

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

  1. Оптимизация методов в Python 3.7
  2. Объединение списков с использованием itertools.chain
  3. Динамические маршруты во Flask
  4. Частичное совпадение пользовательского ввода в Python 3.10
  5. Проверка файла .py на синтаксис.
  6. Работа с файлами и директориями в Python.
  7. Numpy: объединение массивов
  8. Переворот строки
  9. List Comprehension Tutorial
  10. Декоратор Ajax required
  11. Поиск самого длинного слова в списке с использованием max()
  12. Работа с необработанными строками
  13. Транспонирование 2D-массива с помощью zip
  14. Проверка списка: any() и all()
  15. Определение наиболее частого элемента с помощью collections.Counter
  16. Метод сравнения объектов в Python
  17. Разделение строк в Python
  18. Создание новых списков в Python
  19. Оператор * в Python
  20. enumerate() в Python для работы с индексами
  21. Уникальные значения из списка
  22. Настройка вывода в Numpy
  23. Очистка данных с Pandas
  24. Тестирование с responses
  25. Работа с прокси в Python
  26. Создание вкладок с TKinter
  27. Тип CodeType в Python.
  28. Подписка на SelectelNews в Twitter
  29. Сериализация и десериализация объектов
  30. Создание пользовательской коллекции в Python
  31. Python reversed() vs срез[::-1]
  32. Создание новой даты в Python
  33. Обработка ошибки IndexError
  34. Перехват исключений в Python
  35. Принципы программирования
  36. Проверка типов с использованием isinstance
  37. Работа с YAML в Python
  38. Перетасовка списков в Python
  39. Удаление элементов из списка
  40. Работа с itertools
  41. Поиск индекса элемента
  42. Создание директории в Python

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