Python | Agrupar substrings similares en la lista

A veces tenemos una aplicación en la que necesitamos agrupar strings de prefijos comunes en una sola de modo que se pueda realizar un procesamiento posterior de acuerdo con la agrupación. Este tipo de agrupación es útil en los casos de Machine Learning y Web Development. Vamos a discutir ciertas formas en que esto se puede hacer.
Método #1: Usar lambda + itertools.groupby() + split() 
La combinación de las tres funciones anteriores nos ayuda a lograr la tarea. El método de división es clave ya que define el separador por el cual se debe realizar la agrupación. La función groupby hace la agrupación de elementos.
 

Python3

# Python3 code to demonstrate
# group similar substrings
# using lambda + itertools.groupby() + split()
from itertools import groupby
 
# initializing list
test_list = ['geek_1', 'coder_2', 'geek_4', 'coder_3', 'pro_3']
 
# sort list
# essential for grouping
test_list.sort()
 
# printing the original list
print ("The original list is : " + str(test_list))
 
# using lambda + itertools.groupby() + split()
# group similar substrings
res = [list(i) for j, i in groupby(test_list,
                  lambda a: a.split('_')[0])]
 
# printing result
print ("The grouped list is : " + str(res))
Producción : 

La lista original es: [‘coder_2’, ‘coder_3’, ‘geek_1’, ‘geek_4’, ‘pro_3’] 
La lista agrupada es: [[‘coder_2’, ‘coder_3’], [‘geek_1’, ‘geek_4’ ], [‘pro_3’]] 

 

 
Método #2: Usando lambda + itertools.groupby() + partición() 
La tarea similar también se puede realizar reemplazando la función de división con la función de partición. Esta es una forma más eficiente de realizar esta tarea, ya que utiliza los iteradores y, por lo tanto, internamente es más rápido.
 

Python3

# Python3 code to demonstrate
# group similar substrings
# using lambda + itertools.groupby() + partition()
from itertools import groupby
 
# initializing list
test_list = ['geek_1', 'coder_2', 'geek_4', 'coder_3', 'pro_3']
 
# sort list
# essential for grouping
test_list.sort()
 
# printing the original list
print ("The original list is : " + str(test_list))
 
# using lambda + itertools.groupby() + partition()
# group similar substrings
res = [list(i) for j, i in groupby(test_list,
              lambda a: a.partition('_')[0])]
 
# printing result
print ("The grouped list is : " + str(res))
Producción : 

La lista original es: [‘coder_2’, ‘coder_3’, ‘geek_1’, ‘geek_4’, ‘pro_3’] 
La lista agrupada es: [[‘coder_2’, ‘coder_3’], [‘geek_1’, ‘geek_4’ ], [‘pro_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 *