2012-05-04 32 views
0

可能重复:
item frequency count in python如何查找单词在数组中出现多少次? Python的

快速的问题

你如何找到一个字有多少次出现在一个阵列?

我有一个数组,有大约5000个单词的文字,我想查找单词“help”出现在数组中多少次。我该怎么做呢?

的数组存储在X,所以我的代码如下所示:

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

,然后我不知道该怎么把得到的时间“帮助”号出现在X

谢谢你的任何帮助!

+1

你到目前为止尝试过什么?你可以向我们展示你现在使用的代码,以便我们能够更好地帮助你。 – Levon

+0

是5000个单词中的每一个都是数组中的一个条目吗? – cptPH

+0

我没有尝试过任何代码,因为我不知道我会怎么做。 – Hoops

回答

5
>>> 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 
+0

+1为最干净和最强大的解决方案。如果这是一个家庭作业问题,那么他仍然无法帮助他,他本来是要手动完成的。 :-) –

+0

我没有认为它是作业,因为标签不包括在内。但是,点了。 – sberry

1

由于@sberry已经描绘,计数器将服务器的目的,但如果你是仅搜索一次,没兴趣一字一句地获得的所有单词的发生,你可以用一个简单的工具,给出的单词的一个列表的目的

(我已经采取了从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 
+0

-1 @Abhijit如果数组类似于'['h','x','e','y','l','u','p'],那么join()方法将不起作用 –

+0

@AshwiniChaudhary:OP从未提到这些字母混乱。我也通读了评论,但没有提示相同的暗示。 – Abhijit

+0

它看起来像你是正确的,不能做+1我的投票被锁定,直到你编辑解决方案。 –

0
nhelps = len(''.join(charlist).split('help')[1:] 
相关问题