Можно ли использовать (1, [1, 2]) как ключ словаря в Python? Почему?

В Python ключом словаря может быть только неизменяемый (immutable) объект, который поддерживает хеширование (имеет метод hash).

Короткий ответ

Что ответить на собеседовании

В Python ключом словаря может быть только неизменяемый (immutable) объект, который поддерживает хеширование (имеет метод hash). Кортеж (1, [1, 2]) содержит список [1, 2], который является изменяемым и не хешируемым объектом. Поэтому такой кортеж не может быть ключом словаря, так как при попытке использовать его в качестве ключа возникнет ошибка TypeError: unhashable type: 'list'.

Подробный разбор

Ответ с пояснениями

В Python ключом словаря может быть только неизменяемый (immutable) объект, который поддерживает хеширование (имеет метод __hash__). Кортеж (1, [1, 2]) содержит список [1, 2], который является изменяемым и не хешируемым объектом. Поэтому такой кортеж не может быть ключом словаря, так как при попытке использовать его в качестве ключа возникнет ошибка TypeError: unhashable type: 'list'.

Пример:

key = (1, [1, 2])
d = {}
d[key] = 'value'  # TypeError: unhashable type: 'list'

Если нужно использовать кортеж как ключ, все его элементы должны быть хешируемыми, например, (1, (1, 2)) — кортеж с вложенным кортежем.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее