Может ли кортеж (tuple) быть ключом словаря в Python?

«Может ли кортеж (tuple) быть ключом словаря в Python?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, может. Ключом словаря в Python может быть любой хешируемый (hashable) и, следовательно, неизменяемый (immutable) объект. Кортеж удовлетворяет этому требованию.

Пример:

my_dict = {}
key_tuple = (1, 2, 3)
my_dict[key_tuple] = "Значение"
print(my_dict)  # Вывод: {(1, 2, 3): 'Значение'}

Важное исключение: Кортеж, содержащий хотя бы один изменяемый элемент (например, список), теряет свойство хешируемости и не может быть ключом.

invalid_key = (1, [2, 3])
my_dict[invalid_key] = "Ошибка"  # Вызовет TypeError: unhashable type: 'list'