Встречается на 2% собеседований по Python
Что нужно сделать чтобы использовать объект как ключ в словаре
Для использования объекта как ключа в словаре, он должен быть хешируемым. Это означает, что объект должен:
- Иметь метод
__hash__(), который возвращает целое число и остаётся постоянным на протяжении жизни объекта. - Иметь метод
__eq__()для сравнения с другими объектами.
По умолчанию пользовательские классы наследуют __hash__ и __eq__ от object, но можно переопределить их. Объект должен быть неизменяемым, иначе его хеш может измениться, что приведёт к проблемам в словаре.
Пример:
python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
def __eq__(self, other):
return self.x == other.x and self.y == other.y
p1 = Point(1, 2)
p2 = Point(1, 2)
d = {p1: 'point1'}
print(d[p2]) # Выведет 'point1'
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы