Programa de Python para agrupar strings por longitud de K usando sufijo

Dada la Lista de strings, la tarea es escribir un programa en Python para agruparlas en sufijos de longitud K.

Entrada : test_list = [“comida”, “pico”, “geek”, “bueno”, “débil”, “sneek”], K = 3 
Salida : {‘bueno’: [‘comida’, ‘bueno’], ‘eak’: [‘peak’, ‘weak’], ‘eek’: [‘geek’, ‘sneek’]} 
Explicación : las palabras que terminan en ood son comida y bueno, por lo tanto, agrupadas.

Entrada : test_list = [“pico”, “geek”, “bueno”, “débil”], K = 3 
Salida : {‘bueno’: [‘bueno’], ‘eak’: [‘pico’, ‘débil’ ], ‘eek’: [‘geek’]} 
Explicación : la palabra que termina con ood es buena, por lo tanto, agrupada. 
 

Método 1: Usando try/except + bucle

En esto, extraemos los últimos K caracteres y formamos una string, y la agregamos a la lista de claves existente correspondiente, si no se encuentra, pasa por el flujo de captura y crea una nueva clave con una lista con la primera palabra inicializada.

Python3

# Python3 code to demonstrate working of 
# Group Strings by K length Suffix
# Using try/except + loop
  
# initializing list
test_list = ["food", "peak", "geek",
             "good", "weak", "sneek"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 3
  
res = {}
for ele in test_list:
      
    # extracting suffix
    suff = ele[-K : ]
      
    # appending if key found, else creating new one
    try: 
        res[suff].append(ele)
    except:
        res[suff] = [ele]
          
# printing result 
print("The grouped suffix Strings : " + str(res))

Producción:

La lista original es: [‘comida’, ‘pico’, ‘geek’, ‘bueno’, ‘débil’, ‘sneek’]
El sufijo agrupado Strings: {‘ood’: [‘comida’, ‘bueno’], ‘eak’: [‘pico’, ‘débil’], ‘eek’: [‘geek’, ‘sneek’]}

Método 2: Usando defaultdict() + loop.

Este método evita la necesidad de usar el bloque try/except ya que la inicialización de la lista predeterminada la maneja defaultdict().

Python3

# Python3 code to demonstrate working of 
# Group Strings by K length Suffix
# Using defaultdict() + loop
from collections import defaultdict
  
# initializing list
test_list = ["food", "peak", "geek",
             "good", "weak", "sneek"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 3
  
res = defaultdict(list)
for ele in test_list:
      
    # extracting suffix
    suff = ele[-K : ]
      
    # appending into matched suffix key
    res[suff].append(ele)
          
# printing result 
print("The grouped suffix Strings : " + str(dict(res)))

Producción:

La lista original es: [‘comida’, ‘pico’, ‘geek’, ‘bueno’, ‘débil’, ‘sneek’]
El sufijo agrupado Strings: {‘ood’: [‘comida’, ‘bueno’], ‘eak’: [‘pico’, ‘débil’], ‘eek’: [‘geek’, ‘sneek’]}

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 *