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+,一个Counter

根据您的编辑,列表中的每个元素都是一个字母而不是完整的单词,然后:

>>> 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 所描述的那样,Counter 将达到目的,但如果您只搜索一个单词并且不感兴趣获得所有单词的出现,您可以使用更简单的工具来达到目的

(我以 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 回答