Dada la lista de tuplas, ordene por frecuencia del segundo elemento de la tupla.
Entrada : test_list = [(6, 5), (1, 7), (2, 5), (8, 7), (9, 8), (3, 7)]
Salida : [(1, 7), (8, 7), (3, 7), (6, 5), (2, 5), (9, 8)]
Explicación : 7 aparece 3 veces como segundo elemento, por lo que todas las tuplas con 7 se alinean primero.Entrada : test_list = [(1, 7), (8, 7), (9, 8), (3, 7)]
Salida : [(1, 7), (8, 7), (3, 7), (9, 8)]
Explicación : 7 aparece 3 veces como segundo elemento, por lo tanto, todas las tuplas con 7 se alinean primero.
Método #1: Usar sorted() + loop + defaultdict() + lambda
En esto, calculamos la frecuencia usando defaultdict() y usamos este resultado para pasar como parámetro a la función lambda para realizar la clasificación usando sorted() en base a ello.
Python3
# Python3 code to demonstrate working of # Sort by Frequency of second element in Tuple List # Using sorted() + loop + defaultdict() + lambda from collections import defaultdict # initializing list test_list = [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)] # printing original list print("The original list is : " + str(test_list)) # constructing mapping freq_map = defaultdict(int) for idx, val in test_list: freq_map[val] += 1 # performing sort of result res = sorted(test_list, key = lambda ele: freq_map[ele[1]], reverse = True) # printing results print("Sorted List of tuples : " + str(res))
The original list is : [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)] Sorted List of tuples : [(2, 7), (8, 7), (3, 7), (6, 5), (2, 5), (9, 8)]
Método #2: Usar Counter() + lambda + sorted()
En esto, la tarea de cálculo de frecuencia se realiza utilizando Counter(), el resto de la funcionalidad es similar al método anterior.
Python3
# Python3 code to demonstrate working of # Sort by Frequency of second element in Tuple List # Using Counter() + lambda + sorted() from collections import Counter # initializing list test_list = [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)] # printing original list print("The original list is : " + str(test_list)) # constructing mapping using Counter freq_map = Counter(val for key, val in test_list) # performing sort of result res = sorted(test_list, key = lambda ele: freq_map[ele[1]], reverse = True) # printing results print("Sorted List of tuples : " + str(res))
The original list is : [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)] Sorted List of tuples : [(2, 7), (8, 7), (3, 7), (6, 5), (2, 5), (9, 8)]
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