Python | Categorizar la lista dada por tamaño de string

A veces, tenemos un caso de uso en el que necesitamos realizar la agrupación de strings por varios factores, como la primera letra o cualquier otro factor. Este tipo de problemas son típicos de las consultas de bases de datos y, por lo tanto, pueden ocurrir en el desarrollo web durante la programación. Este artículo se centra en una de esas agrupaciones por tamaño de string. Analicemos ciertas formas en que esto se puede realizar.

Método #1: Usar next()+ lambda + bucle

La combinación de las 3 funciones anteriores se utiliza para resolver este problema particular mediante el método ingenuo. La función lambda realiza la tarea de encontrar longitudes similares, y la siguiente función ayuda en la iteración hacia adelante.

# Python3 code to demonstrate
# Categorize by string size 
# using next() + lambda + loop
  
# initializing list
test_list = ['man', 'a', 'geek', 'for', 'b', 'free']
  
# printing original list
print("The original list : " + str(test_list))
  
# using next() + lambda + loop
# Categorize by string size 
util_func = lambda x, y: len(x) == len(y)
res = []
for sub in test_list:
    ele = next((x for x in res if util_func(sub, x[0])), [])
    if ele == []:
        res.append(ele)
    ele.append(sub)
  
# print result
print("The list after Categorization : " + str(res))
Producción :

The original list : ['man', 'a', 'geek', 'for', 'b', 'free']
The list after Categorization : [['man', 'for'], ['a', 'b'], ['geek', 'free']]

Método #2: Usarsorted() + groupby()

Esta tarea en particular también se puede resolver usando la función groupby que ofrece un método conveniente para resolver este problema. La función sorted ordena los elementos por tamaño para ser alimentados a groupby para la agrupación relevante.

# Python3 code to demonstrate
# Categorize by string size 
# using sorted() + groupby()
from itertools import groupby
  
# initializing list
test_list = ['man', 'a', 'geek', 'for', 'b', 'free']
  
# printing original list
print("The original list : " + str(test_list))
  
# using sorted() + groupby()
# Categorize by string size 
util_func = lambda x: len(x)
temp = sorted(test_list, key = util_func)
res = [list(ele) for i, ele in groupby(temp, util_func)]
  
# print result
print("The list after Categorization : " + str(res))
Producción :

The original list : ['man', 'a', 'geek', 'for', 'b', 'free']
The list after Categorization : [['a', 'b'], ['man', 'for'], ['geek', 'free']]

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 *