Więc próbuję zrobić ten program, który poprosi użytkownika o wprowadzenie danych i zapisze wartości w tablicy / liście.
Następnie, gdy zostanie wprowadzony pusty wiersz, powie użytkownikowi, ile z tych wartości jest unikalnych.
Buduję to z powodów życiowych, a nie jako zestaw problemów.
enter: happy
enter: rofl
enter: happy
enter: mpg8
enter: Cpp
enter: Cpp
enter:
There are 4 unique words!
Mój kod wygląda następująco:
# 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:
..i to wszystko, co do tej pory osiągnąłem.
Nie jestem pewien, jak policzyć unikalną liczbę słów na liście?
Jeśli ktoś może opublikować rozwiązanie, abym mógł się z niego nauczyć lub przynajmniej pokazać mi, jak byłoby świetnie, dziękuję!
Odpowiedzi:
Ponadto użyj collections.Counter do refaktoryzacji kodu:
Wynik:
źródło
Counter(words).values()
jest miłe. Zakładamy, że liczba jest w kolejności pierwszego pojawienia się listy słów? To znaczy, jestem przy założeniu, licznik da nam liczbę a, potem B, potem C, a następnie d ...count_dict = {'a': 2, 'b': 1, 'c': 1}
możeszcount_dict = dict(Counter(words).items())
Możesz użyć zestawu do usunięcia duplikatów, a następnie funkcji len do policzenia elementów w zestawie:
źródło
values, counts = np.unique(words, return_counts=True)
źródło
Użyj zestawu :
Uzbrojony w to, Twoje rozwiązanie może być tak proste, jak:
źródło
źródło
W przypadku ndarray istnieje metoda numpy o nazwie unique :
Przykłady:
W przypadku serii istnieje wywołanie funkcji value_counts () :
źródło
źródło
Chociaż zestaw jest najłatwiejszym sposobem, możesz także użyć dyktu i użyć go
some_dict.has(key)
do zapełnienia słownika tylko unikalnymi kluczami i wartościami.Zakładając, że wprowadziłeś już
words[]
dane wejściowe od użytkownika, utwórz dyktę mapującą unikalne słowa z listy na liczbę:źródło
Inna metoda przy użyciu pand
Następnie możesz wyeksportować wyniki w dowolnym formacie
źródło
Co powiesz na:
Zwraca liczbę unikalnych wartości na liście
źródło
pandas
frameworka. Lepiej byłoby wspomnieć o tym w odpowiedzi, ponieważ może to być niejasne dla innych użytkowników.Poniższe powinny działać. Funkcja lambda odfiltrowuje zduplikowane słowa.
źródło
Sam bym użył zestawu, ale oto inny sposób:
źródło
źródło