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))
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))
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