Python: todas las substrings Frecuencia en la string

Dada una String, extraiga todas las substrings únicas con su frecuencia.

Entrada : test_str = “ababa”
Salida : {‘a’: 3, ‘ab’: 2, ‘aba’: 2, ‘abab’: 1, ‘ababa’: 1, ‘b’: 2, ‘ba’: 2, ‘bab’: 1, ‘baba’: 1}
Explicación : todas las substrings con su frecuencia extraída.

Entrada : test_str = “GFGF”
Salida : {‘G’: 2, ‘GF’: 2, ‘GFG’: 1, ‘GFGF’: 1, ‘F’: 2, ‘FG’: 1, ‘FGF’: 1}
Explicación : Todas las substrings con su frecuencia extraída.

Método n. ° 1: usar bucle + comprensión de lista

La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, primero extraemos todas las substrings usando la comprensión de listas, luego se usa ese bucle para aumentar la frecuencia.

Python3

# Python3 code to demonstrate working of 
# All substrings Frequency in String
# Using loop + list comprehension
  
# initializing string
test_str = "abababa"
  
# printing original string
print("The original string is : " + str(test_str))
  
# list comprehension to extract substrings
temp = [test_str[idx: j] for idx in range(len(test_str))
       for j in range(idx + 1, len(test_str) + 1)]
  
# loop to extract final result of frequencies
res = {}
for idx in temp:
     if idx not in res.keys():
             res[idx] = 1
     else:
             res[idx] += 1
               
# printing result 
print("Extracted frequency dictionary : " + str(res)) 
Producción

The original string is : abababa
Extracted frequency dictionary : {'a': 4, 'ab': 3, 'aba': 3, 'abab': 2, 'ababa': 2, 'ababab': 1, 'abababa': 1, 'b': 3, 'ba': 3, 'bab': 2, 'baba': 2, 'babab': 1, 'bababa': 1}

Método #2: Usar la comprensión de listas

Esta es otra forma más en la que se puede realizar esta tarea. En esto, realizamos las tareas de extracción de substring y frecuencia de cálculo en la comprensión de lista anidada única.

Python3

# Python3 code to demonstrate working of 
# All substrings Frequency in String
# Using list comprehension
  
# initializing string
test_str = "abababa"
  
# printing original string
print("The original string is : " + str(test_str))
  
# list comprehension to extract substrings and frequency
res = dict()
for ele in [test_str[idx: j] for idx in range(len(test_str)) for j in range(idx + 1, len(test_str) + 1)]:
    res[ele] = 1 if ele not in res.keys() else res[ele] + 1             
      
# printing result 
print("Extracted frequency dictionary : " + str(res)) 
Producción

The original string is : abababa
Extracted frequency dictionary : {'a': 4, 'ab': 3, 'aba': 3, 'abab': 2, 'ababa': 2, 'ababab': 1, 'abababa': 1, 'b': 3, 'ba': 3, 'bab': 2, 'baba': 2, 'babab': 1, 'bababa': 1}

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 *