计算列表中的单词重复次数PYTHON

时间:2013-03-06 03:10:29

标签: python python-2.7

我有一个代码:

s = "hello this is hello this is baby baby baby baby hello"
slist = s.split()
finallist = []
for word in slist:
    if len(word) >= 4:
          final = final + [word]

基本上这个代码用于获取列表,并且只列出超过4个字符的单词列表。

从这个列表中,我希望能够计算同一个单词出现的次数,并将其保存到新列表中。所以它就像[3,2,4] 3是你好的时代,2就是这个时代,4就是宝贝。

3 个答案:

答案 0 :(得分:3)

from collections import Counter
import re

reg = re.compile('\S{4,}')

s = "hello this is hello this is baby baby baby baby hello"
c = Counter(ma.group() for ma in reg.finditer(s))
print c

结果

Counter({'baby': 4, 'hello': 3, 'this': 2})

此外:

from collections import defaultdict
d = defaultdict(int)

s = "hello this is hello this is baby baby baby baby hello"

for w in s.split():
    if len(w)>=4:
        d[w] += 1

print d

答案 1 :(得分:3)

collections.Counter显然是你的朋友(除非你需要按特定的排序顺序输出)。将它与生成器理解结合起来生成所有长度为4的单词并且你是金色的。

from collections import Counter

Counter(w for w in s.split() if len(w) >= 4)

如果您需要按首次出现的顺序排列元素,请使用有序字典:

from collections import OrderedDict

wc = OrderedDict()
for w in s.split():
    if len(w) >= 4:
        wc[w] = wc.get(w, 0) + 1

答案 2 :(得分:1)

您所要做的就是使用slist中的count方法。

我认为您可以使用词典来更好地控制

s = "hello this is hello this is baby baby baby baby hello"
slist = s.split()
finaldict = {}
for word in slist:
    if len(word) >= 4 and not finaldict.get(word):
          finaldict[word] = slist.count(word)

现在,如果您需要值列表,请执行以下操作:finallist = finaldict.values()