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))
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))
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