可能重复:
python中的项目频率计数
快速提问
你如何找到一个单词在数组中出现的次数?
我有一个包含大约 5000 个文本字的数组,我想找出“帮助”一词在数组中出现的次数。我该怎么做呢?
数组存储在 x 中,所以我的代码如下所示:
x = [...]
word = "help"
然后我不知道该放什么来获得“帮助”出现在 x 中的次数
感谢您的任何帮助!
可能重复:
python中的项目频率计数
快速提问
你如何找到一个单词在数组中出现的次数?
我有一个包含大约 5000 个文本字的数组,我想找出“帮助”一词在数组中出现的次数。我该怎么做呢?
数组存储在 x 中,所以我的代码如下所示:
x = [...]
word = "help"
然后我不知道该放什么来获得“帮助”出现在 x 中的次数
感谢您的任何帮助!
>>> 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
正如@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
nhelps = len(''.join(charlist).split('help')[1:]