Entonces estoy tratando de hacer este programa que le pedirá al usuario que ingrese y almacene los valores en una matriz / lista.
Luego, cuando se ingrese una línea en blanco, le dirá al usuario cuántos de esos valores son únicos.
Estoy construyendo esto por razones de la vida real y no como un conjunto de problemas.
enter: happy
enter: rofl
enter: happy
enter: mpg8
enter: Cpp
enter: Cpp
enter:
There are 4 unique words!
Mi código es el siguiente:
# ask for input
ipta = raw_input("Word: ")
# create list
uniquewords = []
counter = 0
uniquewords.append(ipta)
a = 0 # loop thingy
# while loop to ask for input and append in list
while ipta:
ipta = raw_input("Word: ")
new_words.append(input1)
counter = counter + 1
for p in uniquewords:
... y eso es todo lo que he conseguido hasta ahora.
¿No estoy seguro de cómo contar el número único de palabras en una lista?
Si alguien puede publicar la solución para que pueda aprender de ella, o al menos mostrarme cómo sería genial, ¡gracias!
Respuestas:
Además, use collections.Counter para refactorizar su código:
Salida:
fuente
Counter(words).values()
es bueno. ¿Estamos asumiendo que el recuento está en el orden de aparición de la lista de palabras? Quiero decir, supongo que el recuento nos dará el recuento de a, luego b, luego c, luego d ...count_dict = {'a': 2, 'b': 1, 'c': 1}
puede hacerlocount_dict = dict(Counter(words).items())
Puede usar un conjunto para eliminar duplicados, y luego la función len para contar los elementos del conjunto:
fuente
values, counts = np.unique(words, return_counts=True)
fuente
Utilice un conjunto :
Con esto, su solución podría ser tan simple como:
fuente
fuente
Para ndarray hay un método numpy llamado único :
Ejemplos:
Para una serie hay una función llamada value_counts () :
fuente
fuente
Aunque un conjunto es la forma más fácil, también puede usar un dict y usar
some_dict.has(key)
para completar un diccionario solo con claves y valores únicos.Suponiendo que ya ha completado la
words[]
entrada del usuario, cree un dictado que asigne las palabras únicas en la lista a un número:fuente
Otro método usando pandas
Luego puede exportar los resultados en cualquier formato que desee
fuente
Qué tal si:
Devuelve cuántos valores únicos hay en una lista.
fuente
pandas
framework. Sería mejor mencionarlo en la respuesta, ya que puede no estar claro para otros usuarios.Lo siguiente debería funcionar. La función lambda filtra las palabras duplicadas.
fuente
Yo mismo usaría un conjunto, pero aquí hay otra forma:
fuente
fuente