A veces, mientras trabajamos con las bases de datos, necesitamos realizar ciertas operaciones de lista que se parecen más al lenguaje de consulta, por ejemplo, la agrupación de elementos de lista anidados con respecto a sus otros elementos de índice. Este artículo trata sobre la lista anidada binaria y agrupa cada elemento de la lista anidada con respecto a sus otros elementos de índice
Método #1: Usar la comprensión de listas
La comprensión de listas puede realizar la tarea que normalmente tomaría 4-5 líneas en 1-2 líneas. Esto agrupa el elemento asignando a cada número valores de acuerdo con la coincidencia con otro elemento de la lista.
# Python3 code to demonstrate # to perform binary list grouping # using list comprehension # initializing list test_list = [["G", 0], ["F", 0], ["B", 2], ["E", 2], ['I', 1], ['S', 1], ['S', 2], ['T', 2], ['G', 0]] # using list comprehension # to perform binary list grouping temp = set(map(lambda i : i[1], test_list)) res = [[j[0] for j in test_list if j[1] == i] for i in temp] # printing result print ("The grouped list is : " + str(res))
The grouped list is : [['G', 'F', 'G'], ['I', 'S'], ['B', 'E', 'S', 'T']]
Método #2: Usoitertools.groupby() + itemgetter()
También podemos usar la función groupby para realizar esta tarea en particular. Este método sigue 2-3 pasos. Primero, la secuencia se ordena con respecto al segundo elemento, ahora esto se puede alimentar para agruparlo y luego se agrupa. Luego, por último, imprimimos el primer elemento según lo requiera el resultado.
# Python3 code to demonstrate # to perform binary list grouping # using itertools.groupby() + itemgetter() from itertools import groupby from operator import itemgetter # initializing list test_list = [["G", 0], ["F", 0], ["B", 2], ["E", 2], ['I', 1], ['S', 1], ['S', 2], ['T', 2], ['G', 0]] # using itertools.groupby() + itemgetter() # to perform binary list grouping test_list.sort(key = itemgetter(1)) groups = groupby(test_list, itemgetter(1)) res = [[i[0] for i in val] for (key, val) in groups] # printing result print ("The grouped list is : " + str(res))
The grouped list is : [['G', 'F', 'G'], ['I', 'S'], ['B', 'E', 'S', 'T']]
Método #3: Usarcollections.defaultdict()
Este es un método convencional para realizar el hash de todas las claves con el valor correspondiente en secuencia y luego imprimir los valores correspondientes a la lista hash.
# Python3 code to demonstrate # to perform binary list grouping # using collections.defaultdict() import collections # initializing list test_list = [["G", 0], ["F", 0], ["B", 2], ["E", 2], ['I', 1], ['S', 1], ['S', 2], ['T', 2], ['G', 0]] # using collections.defaultdict() # to perform binary list grouping res = collections.defaultdict(list) for val in test_list: res[val[1]].append(val[0]) # printing result print ("The grouped list is : " + str(res.values()))
The grouped list is : dict_values([['G', 'F', 'G'], ['I', 'S'], ['B', 'E', 'S', 'T']])
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