Ответ
Да, кортеж может быть ключом словаря в Python, но только если все его элементы являются хешируемыми (неизменяемыми) типами данных. Это связано с тем, что ключ словаря должен быть хешируемым объектом.
Пример допустимого кортежа-ключа:
valid_key = (1, "hello", 3.14) # Все элементы неизменяемы
my_dict = {valid_key: "значение"}
print(my_dict[(1, "hello", 3.14)]) # Вывод: значение
Пример недопустимого кортежа-ключа:
invalid_key = (1, [2, 3]) # Список внутри кортежа — изменяемый!
# my_dict = {invalid_key: "значение"} # Вызовет TypeError: unhashable type: 'list'
Почему это работает: Словарь в Python использует хеш-таблицу для быстрого доступа. Хеш-функция может быть вычислена только для неизменяемых объектов, что гарантирует, что ключ не изменится после добавления в словарь. Кортеж сам по себе неизменяем, но проверяется хешируемость каждого его элемента.