Python | Agrupación de lista de elementos binarios

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))
Producción:

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))
Producción:

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()))
Producción:

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

Deja una respuesta

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