0

重複の可能性:
Pythonでのアイテム頻度カウント

簡単な質問

ある単語が配列に何回出現するかを調べるにはどうすればよいですか?

約 5000 語のテキストを含む配列があり、配列に「ヘルプ」という単語が何回出現するかを調べたいと考えています。どうすればいいですか?

配列は x に格納されるため、私のコードは次のようになります。

x = [...]
word = "help"

そして、xに「ヘルプ」が表示される回数を取得するために何を入れればよいかわかりません

助けてくれてありがとう!

4

3 に答える 3

6
>>> import collections
>>> print collections.Counter(['a', 'word', 'is', 'a', 'thing', 'that', 'is', 'countable'])
Counter({'a': 2, 'is': 2, 'word': 1, 'that': 1, 'countable': 1, 'thing': 1})

これは 2.7+、カウンターです。

リスト内の各要素が完全な単語ではなく文字である編集に基づいて、次のようになります。

>>> import re
>>> letters = 
['i', 'n', 'e', 'e', 'd', 's', 'o', 'm', 'e', 'h', 'e', 'l', 'p', 'h', 'e', 'l', 'p', 'm', 'e', 'p', 'l', 'e', 'a', 's', 'e', 'I', 'n', 'e', 'e', 'd', 'h', 'e', 'l', 'p']
>>> len(re.findall('help', "".join(letters)))
3
于 2012-05-04T05:48:54.137 に答える
1

@sberryが示したように、カウンターは目的を果たしますが、単一の単語を1回だけ検索し、すべての単語の出現を取得することに興味がない場合は、目的のためにより単純なツールを使用できます

(私はsberryから例を取りました)

与えられた単語の出現を見つけるための単語のリストが与えられた場合、リストのcountメソッドを使用できます

>>> list_of_words=['a', 'word', 'is', 'a', 'thing', 'that', 'is', 'countable']
>>> list_of_words.count('is')
2

あなたのコメントが示しているように、文字のリストを検索することに興味があるかもしれません。そのような

letters =
['i', 'n', 'e', 'e', 'd', 's', 'o', 'm', 'e', 'h', 'e', 'l', 'p', 'h', 'e', 'l', 'p', 'm', 'e', 'p', 'l', 'e', 'a', 's', 'e', 'I', 'n', 'e', 'e', 'd', 'h', 'e', 'l', 'p']

すべての文字を連結して生成された後の文字列でカウントを使用することもできます

>>> ''.join(letters).count('help')
3

言葉がごちゃごちゃにcollections.Counterなったらここで魔法をかけて

>>> def count_words_in_jumbled(jumbled,word):
    jumbled_counter = collections.Counter(jumbled)
    word_counter = collections.Counter(word)
    return min(v /word_counter[k] for k,v in jumbled_counter.iteritems() if k in word)

>>> count_words_in_jumbled(['h','e','l','l','h','e','l','l','h','e','l'],'hel')
3
>>> count_words_in_jumbled(['h','e','l','l','h','e','l','l','h','e','l'],'hell')
2
>>> count_words_in_jumbled(['h','x','e','y','l','u','p'] ,'help')
1
于 2012-05-04T06:26:34.647 に答える
0
nhelps = len(''.join(charlist).split('help')[1:]
于 2012-05-04T07:12:54.197 に答える