Python | Ordenar la lista de tuplas por orden específico

La clasificación normal de tuplas se ha tratado anteriormente. Este artículo tiene como objetivo ordenar la lista dada de tuplas por el segundo elemento, según el orden proporcionado en alguna lista.

Método n.º 1: usar la comprensión de lista + filter()+ lambda
Las tres funciones anteriores se pueden combinar para realizar la tarea particular en la que la comprensión de lista realiza la iteración, la función lambda se usa como función auxiliar para filtrar y ordenar según el segundo elemento de la tupla.

# Python3 code to demonstrate
# sort list of tuples according to second
# using list comprehension + filter() + lambda
  
# initializing list of tuples
test_list = [('a', 2), ('c', 3), ('d', 4)]
  
# initializing sort order 
sort_order = [4, 2, 3]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# printing sort order list 
print ("The sort order list is : " + str(sort_order))
  
# using list comprehension + filter() + lambda
# sort list of tuples according to second
res = [i for j in sort_order 
      for i in filter(lambda k: k[1] == j, test_list)]
  
# printing result
print ("The list after appropriate sorting : " + str(res))
Producción:

The original list is : [('a', 2), ('c', 3), ('d', 4)]
The sort order list is : [4, 2, 3]
The list after appropriate sorting : [('d', 4), ('a', 2), ('c', 3)]

 
Método n.º 2: usar sorted() + index()+ lambda
La función sorted se puede usar para ordenar según el orden especificado. La función de índice especifica que se debe tener en cuenta el segundo elemento de la tupla y que todos se unen con la ayuda de lambda.

# Python3 code to demonstrate
# sort list of tuples according to second
# using sorted() + index() + lambda
  
# initializing list of tuples
test_list = [('a', 2), ('c', 3), ('d', 4)]
  
# initializing sort order 
sort_order = [4, 2, 3]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# printing sort order list 
print ("The sort order list is : " + str(sort_order))
  
# using sorted() + index() + lambda
# sort list of tuples according to second
res = list(sorted(test_list, 
      key = lambda i: sort_order.index(i[1])))
  
# printing result
print ("The list after appropriate sorting : " + str(res))
Producción:

The original list is : [('a', 2), ('c', 3), ('d', 4)]
The sort order list is : [4, 2, 3]
The list after appropriate sorting : [('d', 4), ('a', 2), ('c', 3)]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *