J'essaie donc de créer ce programme qui demandera à l'utilisateur une entrée et stockera les valeurs dans un tableau / une liste.
Ensuite, lorsqu'une ligne vide est entrée, elle indiquera à l'utilisateur combien de ces valeurs sont uniques.
Je construis ceci pour des raisons réelles et non comme un ensemble de problèmes.
enter: happy
enter: rofl
enter: happy
enter: mpg8
enter: Cpp
enter: Cpp
enter:
There are 4 unique words!
Mon code est le suivant:
# 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:
.. et c'est à peu près tout ce que j'ai obtenu jusqu'ici.
Je ne sais pas comment compter le nombre unique de mots dans une liste?
Si quelqu'un peut publier la solution pour que je puisse en tirer des leçons, ou du moins me montrer comment ce serait génial, merci!
Réponses:
De plus, utilisez collections.Counter pour refactoriser votre code:
Production:
la source
Counter(words).values()
c'est sympa. Nous supposons que le décompte est dans l'ordre de première apparition de la liste de mots? Je veux dire, je suppose que le décompte nous donnera le décompte de a, puis b, puis c, puis d ...count_dict = {'a': 2, 'b': 1, 'c': 1}
vous pouvez le fairecount_dict = dict(Counter(words).items())
Vous pouvez utiliser un ensemble pour supprimer les doublons, puis la fonction len pour compter les éléments de l'ensemble:
la source
values, counts = np.unique(words, return_counts=True)
la source
Utilisez un ensemble :
Armé de cela, votre solution pourrait être aussi simple que:
la source
la source
Pour ndarray, il existe une méthode numpy appelée unique :
Exemples:
Pour une série, il existe un appel de fonction value_counts () :
la source
la source
Bien qu'un ensemble soit le moyen le plus simple, vous pouvez également utiliser un dict et utiliser
some_dict.has(key)
pour remplir un dictionnaire avec uniquement des clés et des valeurs uniques.En supposant que vous avez déjà rempli les
words[]
entrées de l'utilisateur, créez un dict qui mappe les mots uniques de la liste à un nombre:la source
Autre méthode en utilisant des pandas
Vous pouvez ensuite exporter les résultats dans le format de votre choix
la source
Que diriez-vous:
Il renvoie le nombre de valeurs uniques dans une liste
la source
pandas
framework. Il serait préférable de le mentionner dans la réponse car il peut ne pas être clair pour les autres utilisateurs.Ce qui suit devrait fonctionner. La fonction lambda filtre les mots dupliqués.
la source
J'utiliserais un ensemble moi-même, mais voici encore une autre façon:
la source
la source