快速提问
如何找到一个单词在数组中出现的次数?
我有一个大约有5000个单词的数组,我想知道数组中“help”这个词的出现次数。我该怎么做?
数组存储在x中,因此我的代码如下所示:
x = [...]
word = "help"
然后我不知道该怎么做以获得“帮助”出现在x
中的次数谢谢你的帮助!
答案 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:]