Ключом в словаре Python может быть любой хешируемый объект.
Хешируемость объекта означает, что у него есть хеш-значение, которое не меняется в течение его жизненного цикла, и что он может быть сравнен с другими объектами на равенство.
Примеры хешируемых типов данных:
int, float, complex)str)tuple), при условии, что все элементы кортежа также хешируемыеbool)NoneПримеры нехешируемых типов данных:
list)dict)set)python
Если объект является пользовательским классом, он может стать хешируемым, если определить методы __hash__ и __eq__. По умолчанию большинство пользовательских классов хешируемы, кроме тех, у которых явно определен метод __eq__, но не __hash__, или наследующих от класса с неизменяемым хешем, но имеющих изменяемые атрибуты.