A veces, tenemos un caso de uso en el que necesitamos realizar la agrupación de strings por varios factores, como la última 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 la última letra de la string. Analicemos ciertas formas en que esto se puede realizar.
Método #1: Usarnext() + lambda + loop
La combinación de las 3 funciones anteriores se usa para resolver este problema en particular mediante el método ingenuo. La función lambda realiza la tarea de encontrar el carácter posterior similar, y la siguiente función ayuda en la iteración hacia adelante.
# Python3 code to demonstrate # Rear character String categorization # using next() + lambda + loop # initializing list test_list = ['an', 'apple', 'geek', 'for', 'greek', 'free'] # printing original list print("The original list : " + str(test_list)) # using next() + lambda + loop # Rear character String categorization util_func = lambda x, y: x[len(x) - 1] == y[len(y) - 1] res = [] for sub in test_list: ele = next((x for x in res if util_func(sub, x[len(x) - 1])), []) if ele == []: res.append(ele) ele.append(sub) # print result print("The list after Categorization : " + str(res))
The original list : ['an', 'apple', 'geek', 'for', 'greek', 'free'] The list after Categorization : [['an'], ['apple', 'free'], ['geek', 'greek'], ['for']]
Método #2: Usarsorted() + groupby()
Esta tarea en particular también se puede resolver usando la función groupby que ofrece un método convencional para resolver este problema. La función sorted ordena los elementos por carácter posterior para que se envíen a groupby para la agrupación correspondiente.
# Python3 code to demonstrate # Rear character String categorization # using sorted() + groupby() from itertools import groupby # initializing list test_list = ['an', 'apple', 'geek', 'for', 'greek', 'free'] # printing original list print("The original list : " + str(test_list)) # using sorted() + groupby() # Rear character String categorization util_func = lambda x: x[len(x) - 1] 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))
The original list : ['an', 'apple', 'geek', 'for', 'greek', 'free'] The list after Categorization : [['an'], ['apple', 'free'], ['geek', 'greek'], ['for']]
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