Dada una lista de strings, la tarea es escribir un programa en Python para obtener un porcentaje de participación de cada palabra en la lista de strings.
Explicación Computacional: (Ocurrencia de X palabra / Total de palabras) * 100.
Ejemplo:
Entrada: test_list = [“Gfg es mejor para geeks”, “All love Gfg”, “Gfg es mejor para CS”, “Para CS geeks Gfg es mejor”]
Output : {‘Gfg’: 0.21052631578947367, ‘is’: 0.15789473684210525, ‘best’: 0.15789473684210525, ‘for’: 0.10526315789473684, ‘geeks’: 0.10526315789473684, ‘All’: 0.05263157894736842, ‘love’: 0.05263157894736842, ‘CS’: 0.10526315789473684 , ‘Para’: 0.05263157894736842}
Explicación: Porcentaje de frecuencia de cada palabra wrt. se calculan todas las demás palabras de la lista. Gfg ocurre 4 veces. Palabras totales = 19.
Entrada: test_list = [“Gfg es mejor para geeks”, “All love Gfg”]
Salida: {‘Gfg’: 0.25, ‘is’: 0.125, ‘best’: 0.125, ‘for’: 0.125, ‘geeks’: 0.125, ‘All’: 0.125, ‘love’: 0.125}
Explicación: Porcentaje de frecuencia de cada palabra wrt. se calculan todas las demás palabras de la lista.
Método #1: Usando sum() + Counter() + join() + split()
En esto, realizamos la tarea de obtener cada palabra usando split() después de unir cada string usando join(). Counter() obtiene la frecuencia de cada palabra asignada. Publique que el tamaño de todas las palabras calculado usando sum(), puede obtener la parte requerida de cada palabra, aprovechando la frecuencia almacenada en Counter.
Python3
# Python3 code to demonstrate working of # Each word frequency percentage # Using sum() + Counter()+ join() + split() from collections import Counter # initializing list test_list = ["Gfg is best for geeks", "All love Gfg", "Gfg is best for CS", "For CS geeks Gfg is best"] # printing original list print("The original list is : " + str(test_list)) # concatenating using join joined = " ".join(ele for ele in test_list) # mapping using Counter() mappd = Counter(joined.split()) # getting total using sum total_val = sum(mappd.values()) # getting share of each word res = {key: val / total_val for key, val in mappd.items()} # printing result print("Percentage share of each word : " + str(res))
Producción:
La lista original es: [‘Gfg es mejor para geeks’, ‘All love Gfg’, ‘Gfg es mejor para CS’, ‘For CS geeks Gfg is best’]
Percentage share of each word : {‘Gfg’: 0.21052631578947367, ‘is’: 0.15789473684210525, ‘best’: 0.15789473684210525, ‘for’: 0.10526315789473684, ‘geeks’: 0.10526315789473684, ‘All’: 0.05263157894736842, ‘love’: 0.05263157894736842, ‘ CS’: 0.10526315789473684, ‘Para’: 0.05263157894736842}
Método n.º 2: Usar una sola línea combinada
Similar al método anterior, simplemente combinando cada segmento para proporcionar una solución compacta de una sola línea.
Python3
# Python3 code to demonstrate working of # Each word frequency percentage # Using combined one-liner from collections import Counter # initializing list test_list = ["Gfg is best for geeks", "All love Gfg", "Gfg is best for CS", "For CS geeks Gfg is best"] # printing original list print("The original list is : " + str(test_list)) # mapping using Counter() mappd = Counter(" ".join(ele for ele in test_list).split()) # getting share of each word res = {key: val / sum(mappd.values()) for key, val in mappd.items()} # printing result print("Percentage share of each word : " + str(res))
Producción:
La lista original es: [‘Gfg es mejor para geeks’, ‘All love Gfg’, ‘Gfg es mejor para CS’, ‘For CS geeks Gfg is best’]
Percentage share of each word : {‘Gfg’: 0.21052631578947367, ‘is’: 0.15789473684210525, ‘best’: 0.15789473684210525, ‘for’: 0.10526315789473684, ‘geeks’: 0.10526315789473684, ‘All’: 0.05263157894736842, ‘love’: 0.05263157894736842, ‘ CS’: 0.10526315789473684, ‘Para’: 0.05263157894736842}7894736842}
La complejidad de tiempo y espacio de todos los métodos es la misma:
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)
Método #3: Usando join(), split() y count()
Inicialmente, una todos los elementos de la lista por espacio, luego divida la string por espacio, lo que dará como resultado una lista. Ahora itere sobre una lista y verifique si el elemento ya está presente o no en las claves del diccionario. Si no está presente, agregue el elemento como clave para diccionario con ocurrencia de palabra dividida por la longitud de la lista como valor (nada más que porcentaje de frecuencia de palabra)
Python3
# Python3 code to demonstrate working of # Each word frequency percentage # Using count() and split() # initializing list test_list = ["Gfg is best for geeks", "All love Gfg", "Gfg is best for CS", "For CS geeks Gfg is best"] # printing original list print("The original list is : " + str(test_list)) # concatenating using join joined = " ".join(ele for ele in test_list) p=joined.split() d=dict() for i in p: if i not in d.keys(): d[i]=p.count(i)/len(p) # printing result print("Percentage share of each word : " + str(d))
The original list is : ['Gfg is best for geeks', 'All love Gfg', 'Gfg is best for CS', 'For CS geeks Gfg is best'] Percentage share of each word : {'Gfg': 0.21052631578947367, 'is': 0.15789473684210525, 'best': 0.15789473684210525, 'for': 0.10526315789473684, 'geeks': 0.10526315789473684, 'All': 0.05263157894736842, 'love': 0.05263157894736842, 'CS': 0.10526315789473684, 'For': 0.05263157894736842}
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