Como classificar a sub-lista externa e interna de uma lista aninhada em Python?

Primeiro de tudo, desculpas se isso é muito ingênuo (eu sou um novato). Eu tenho o seguinte tipo de lista de listas, que eu gostaria de classificar primeiro pelo último membro da lista interna em ordem crescente:

data =  [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2] ]

Eu faço isso usando:sorted(data,key=operator.itemgetter(2),reverse = True), o que me dá:

[[1, .45, 0], [3, .98, 0],[4, .82, 1], [5, .77, 1], [2, .49, 2], [6, .98, 2]]

Agora, gostaria de classificar nas sub-listas, ou seja, primeiro classifique a lista com seu último membro como '0' usando o membro do meio como a chave, em ordem decrescente. Em seguida, classifique a sub-lista com '1' como seu último membro e assim por diante. Observe que o número de elementos em cada sub-lista é diferente e não é conhecido. A lista final deve ficar assim:

[[3, .98, 0],[1, .45, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2],[2, .49, 2] ]

A lista é realmente muito grande, portanto, estou procurando uma implementação eficiente. Qualquer orientação seria apreciada!

questionAnswers(2)

yourAnswerToTheQuestion