如何查找单词出现在一个数组中的次数?蟒蛇

时间:2012-05-04 05:44:50

标签: python arrays

  

可能重复:
  item frequency count in python

快速提问

如何找到一个单词在数组中出现的次数?

我有一个大约有5000个单词的数组,我想知道数组中“help”这个词的出现次数。我该怎么做?

数组存储在x中,因此我的代码如下所示:

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

然后我不知道该怎么做以获得“帮助”出现在x

中的次数

谢谢你的帮助!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

nhelps = len(''.join(charlist).split('help')[1:]