Python – Ordenar tuplas por lista

A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos ordenar todas las claves de las tuplas usando una lista externa. Este problema puede tener aplicación en dominios de datos como Data Science. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [(‘Gfg’, 10), (‘best’, 3), (‘CS’, 8), (‘Geeks’, 7)], ord_list = [‘Geeks’, ‘best’, ‘ CS’, ‘Gfg’]
Salida : [(‘Geeks’, 7), (‘mejor’, 3), (‘CS’, 8), (‘Gfg’, 10)]

Entrada : test_list = [(‘mejor’, 3), (‘CS’, 8), (‘Geeks’, 7)], ord_list = [‘Geeks’, ‘mejor’, ‘CS’]
Salida : [(‘ Frikis’, 7), (‘mejor’, 3), (‘CS’, 8)]

Método n.º 1: usar dict()la comprensión de lista +
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos esta tarea convirtiendo la lista de tuplas en diccionarios y, como segundo paso, usamos la comprensión de listas para iterar a través de la lista y asignar las claves del diccionario con valores.

# Python3 code to demonstrate working of 
# Order Tuples by List
# Using dict() + list comprehension
  
# initializing list
test_list = [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing order list 
ord_list = ['Geeks', 'best', 'CS', 'Gfg']
  
# Order Tuples by List
# Using dict() + list comprehension
temp = dict(test_list)
res = [(key, temp[key]) for key in ord_list]
  
# printing result 
print("The ordered tuple list : " + str(res)) 
Producción :

The original list is : [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
The ordered tuple list : [('Geeks', 2), ('best', 9), ('CS', 10), ('Gfg', 3)]

Método #2: Usar setdefault() + sorted() + lambda
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de mapear elementos a índices y crear una búsqueda usando setdefault. Y, como segundo paso, usar la lista ordenada para ordenar usando la lista de valores del diccionario de búsqueda.

# Python3 code to demonstrate working of 
# Order Tuples by List
# Using setdefault() + sorted() + lambda
  
# initializing list
test_list = [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing order list 
ord_list = ['Geeks', 'best', 'CS', 'Gfg']
  
# Order Tuples by List
# Using setdefault() + sorted() + lambda
temp = dict()
for key, ele in enumerate(ord_list):
    temp.setdefault(ele, []).append(key)       
res = sorted(test_list, key = lambda ele: temp[ele[0]].pop())  
  
# printing result 
print("The ordered tuple list : " + str(res)) 
Producción :

The original list is : [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
The ordered tuple list : [('Geeks', 2), ('best', 9), ('CS', 10), ('Gfg', 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 *