Встречается на собеседованиях • сегодня
Почему не любой тип данных может быть ключом словаря в Python
В Python ключом словаря может быть только хешируемый (неизменяемый) тип данных. Это связано с внутренней реализацией словарей, которые используют хеш-таблицы для быстрого доступа к значениям.
Хешируемые объекты должны:
- Иметь метод
__hash__(), который возвращает одно и то же значение на протяжении всего времени жизни объекта - Поддерживать сравнение через
__eq__() - Если
a == b, тоhash(a) == hash(b)
Пример допустимых ключей:
python
d = {
'str': 1, # строка
42: 'answer', # целое число
(1, 2): 'tuple' # кортеж (если содержит только хешируемые элементы)
}Пример недопустимых ключей:
python
# Списки - изменяемые
d = {[1, 2]: 'error'} # TypeError: unhashable type: 'list'
# Словари - изменяемые
d = {{'a': 1}: 'error'} # TypeError: unhashable type: 'dict'
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы