¿Cómo ordenar la lista secundaria externa e interna de una lista anidada en Python?

En primer lugar, disculpas si esto es demasiado ingenuo (soy un principiante). Tengo el siguiente tipo de lista de listas, que me gustaría ordenar primero por el último miembro de la lista interna en orden ascendente:

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

Esto lo logro usando:sorted(data,key=operator.itemgetter(2),reverse = True), lo que me da:

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

Ahora, me gustaría ordenar dentro de las sub-listas, es decir, primero ordenar la lista con su último miembro como '0' usando el miembro medio como clave, en orden descendente. Luego ordene la sub-lista con '1' como su último miembro y así sucesivamente. Tenga en cuenta que la cantidad de elementos en cada sub-lista son diferentes y no se conocen. La lista final debería verse así:

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

La lista es bastante grande, por lo tanto, estoy buscando una implementación eficiente. Cualquier orientación sería apreciada!

Respuestas a la pregunta(2)

Su respuesta a la pregunta