Python: lista de clasificación de tuplas basada en múltiples elementos de clasificación

Primero, he notado que hay muchas preguntas publicadas en la clasificación de listas de tuplas, sin embargo, después de revisar algunas publicaciones, no vi ninguna de las preguntas con este formato en particular para la lista. Le pido disculpas por adelantado por una posible pregunta, pero creo que esto debería ser simple.

Deja que la lista de tuplas sea esta:

my_list = [(('G', 'J', 'I'), 1.0), (('E', 'H', 'F'), 1.0), (('F', 'H', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'I', 'G'), 0.8889), (('H', 'J', 'I'), 0.875)] 

Tenga en cuenta que cada tupla en la lista consta de 1: otra tupla de longitud 3 con 3 letras y 2: un número de punto flotante. Mi objective de clasificación es simple entonces: primero ordene la lista de tuplas por el número de punto flotante, segundo rompa todos los lazos en el número de punto flotante y luego clasifique por la primera letra en la tupla de longitud 3, tercero rompa los lazos en esa letra clasificación por la 2ª letra en la tupla de longitud 3. La salida deseada sería entonces:

 sorted_list = [(('E', 'H', 'F'), 1.0), (('G', 'J', 'I'), 1.0), (('F', 'H', 'G'), 0.8889), (('H', 'I', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'J', 'I'), 0.875)] 

en este ejemplo en particular, la clasificación en la segunda letra para romper los lazos en la primera letra no apareció, aunque sí en mi conjunto de datos más grande.

¡Gracias!

Aquí hay una forma de hacerlo: la primera clasificación se realiza a la inversa en el flotador, mientras que los lazos se rompen al clasificar en la tupla interna:

 srt_lst = sorted(my_list, key=lambda (x, y): (-y, x)) #python 2 print(srt_lst) # [(('E', 'H', 'F'), 1.0), (('G', 'J', 'I'), 1.0), (('F', 'H', 'G'), 0.8889), (('H', 'I', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'J', 'I'), 0.875)] 

En Python 3, tendrás que indexar el único parámetro de la lada para acceder a los elementos y usarlos para ordenar:

 srt_lst = sorted(my_list, key=lambda tup: (-tup[1], tup[0]))