我有一个代码:
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就是宝贝。
答案 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()