Вам необходимо создать подходящую ключевую функцию для сортировки - см. Сортировка кортежей по второму параметру и множеству других
data = [("a", "b", "c"), ("b", "a", "c"), ("b", "a", "d")]
s = sorted(data, key = lambda x: (x[1],-ord(x[2]))) # "trick" to sort descending
print (s)
дает
[('b', 'a', 'd'), ('b', 'a', 'c'), ('a', 'b', 'c')]
Вы используете «настроенный» кортеж в качестве ключа и должны быть немного креативны при его создании.
Функция ord
дает вам значение ascii персонажа, отрицая его, вы «сортируете по убыванию».
Если вы сортируете больше, чем буквы, вам нужно быть еще более креативным.
Серьезно не проверено:
data = [("a", "b", "cesa"), ("b", "a", "ceta"), ("b", "a", "derived")]
s = sorted(data, key = lambda x: (x[1], tuple((-ord(t) for t in x[2])) ) )
чтобы получить
[('b', 'a', 'derived'), ('b', 'a', 'ceta'), ('a', 'b', 'cesa')]