Кортежи в Python называют "хешируемыми" потому, что они могут быть использованы в качестве ключей в словарях (dict) и элементах множеств (set).  Для того, чтобы тип данных мог быть использован в качестве ключа словаря или элемента множества, он должен быть 
неизменяемым и 
хешируемым.
    
    
Неизменяемость означает, что после создания кортежа его содержимое не может быть изменено.  Попытка изменить элемент кортежа приведет к ошибке.
    
    
Хешируемость означает, что объект имеет хеш-значение, которое остается постоянным на протяжении всего времени жизни объекта.  Хеш-значение - это целочисленное представление объекта, которое используется для быстрого поиска объекта в хеш-таблицах, которые лежат в основе словарей и множеств.  В Python функция 
hash() возвращает хеш-значение объекта.  Важно, чтобы у неизменяемого объекта всегда было одно и то же хеш-значение.
    
    Поскольку кортежи неизменяемы и имеют стабильное хеш-значение, вычисленное на основе их содержимого, они удовлетворяют требованиям для использования в качестве ключей словарей и элементов множеств. В отличие от списков, которые изменяемы, списки не хешируются и не могут использоваться в этих контекстах.  Изменение содержимого списка изменило бы его хеш-значение, что сделало бы его непригодным для использования в качестве ключа словаря или элемента множества, поскольку хеш-таблица не смогла бы правильно его найти.
    
    Например:
    
        
        my_tuple = (1, 2, 3)
        my_dict = {my_tuple: "значение"}  # Это работает
        my_list = [1, 2, 3]
        # my_dict = {my_list: "значение"}  # Это вызовет TypeError: unhashable type: 'list'