Então, eu estou tentando criar este programa que solicitará ao usuário entrada e armazenará os valores em uma matriz / lista.
Quando uma linha em branco é inserida, ele informa ao usuário quantos desses valores são únicos.
Estou construindo isso por razões da vida real e não como um conjunto de problemas.
enter: happy
enter: rofl
enter: happy
enter: mpg8
enter: Cpp
enter: Cpp
enter:
There are 4 unique words!
Meu código é o seguinte:
# 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:
..e isso é tudo o que consegui até agora.
Não sei como contar o número único de palavras em uma lista?
Se alguém puder postar a solução para que eu possa aprender com ela, ou pelo menos me mostrar como seria ótimo, obrigado!
Respostas:
Além disso, use collections.Counter para refatorar seu código:
Resultado:
fonte
Counter(words).values()
é legal. Estamos assumindo que a contagem está na ordem da primeira aparição da lista de palavras? Quer dizer, eu estou supondo que a contagem nos dará a contagem de um, então B, então c, em seguida, d ...Você pode usar um conjunto para remover duplicatas e a função len para contar os elementos no conjunto:
fonte
values, counts = np.unique(words, return_counts=True)
fonte
Use um conjunto :
Armado com isso, sua solução pode ser tão simples quanto:
fonte
fonte
Para ndarray, existe um método numpy chamado unique :
Exemplos:
Para uma série, há uma chamada de função value_counts () :
fonte
fonte
Embora um conjunto seja a maneira mais fácil, você também pode usar um dict e usar
some_dict.has(key)
para preencher um dicionário com apenas chaves e valores exclusivos.Supondo que você já tenha preenchido
words[]
a entrada do usuário, crie um ditado mapeando as palavras exclusivas da lista para um número:fonte
Outro método usando pandas
Você pode exportar os resultados no formato que desejar
fonte
E se:
Retorna quantos valores únicos estão em uma lista
fonte
pandas
framework. Seria melhor mencioná-lo na resposta, pois pode não ser claro para outros usuários.O seguinte deve funcionar. A função lambda filtra as palavras duplicadas.
fonte
Eu mesmo usaria um conjunto, mas aqui está outra maneira:
fonte
fonte