Зачем нужны кортежи?
Кортежи неизменяемы и от них можно найти хеш, если они, конечно, сами не содержат изменяемых типов.
Из-за этого кортежи более легковесны, а возможность найти хеш позволяет использовать кортежи в виде ключей для словарей.
Например, можно хранить содержимое некоторых координат массиваd = {(0, 1): 'X', (2, 3): 'O'}
Теперь легко обойти все содержимое:for x, y in d:
    print(x, y, d[x, y])
Кортежи это аналог списка, а не словаря... В основном они дают скорость работы в обмен на меньшую гибкость и больше ничего. Если вы используете кортежи там где им быть уместно значит вы молодец!