Что может быть ключом в словаре?
Для начала простыми словами о том, что такое хэш. Это математическая функция, приводящая различные массивы данных в строку фиксированной длины. Одинаковые массивы данных (например, одна и та же строка в разных переменных) будут иметь одинаковый хэш.
А далее просто: любой хэшируемый тип, а значит, immutable - имеет метод hash, который на самом и является ключом словаря. Словарь - это хэш-таблица, то есть "это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию удаления и операцию поиска пары по ключу."
Википедия говорит нам "Важное свойство хеш-таблиц состоит в том, что, при некоторых разумных допущениях, все три операции (добавление, удаление, поиск элемента) в среднем выполняются за время O(1).
То есть, максимально быстро.
Как обычно, мимоходом я затронул другую тему - оценку сложности алгоритмов, которая часто упоминается как Big O Notation. Не буду углубляться, просто скажу, что O(1) означает минимальные затраты времени и количества операций, сложность поиска слабо возрастает с ростом количества элементов структуры данных (нашего словаря.)
Для англоязычных есть отличная страница, где всё показано в одной наглядной картинке: https://www.bigocheatsheet.com/
Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.

