合并词对计数:python
我写了一个映射器,它会打印出单词对和每个单词对的计数,计数都是1。
import sys
from itertools import tee
for line in sys.stdin:
line = line.strip()
words = line.split()
def pairs(lst):
return zip(lst,lst[1:]+[lst[0]])
for i in pairs(words):
print i,1
我尝试写一个归约器来创建一个字典,但我有点卡在怎么把它们加起来这一步。
import sys
mydict = dict()
for line in sys.stdin:
(word,cnt) = line.strip().split('\t') #\t
mydict[word] = mydict.get(word,0)+1
for word,cnt in mydict.items():
print word,cnt
但是它提示在.split那一行参数不够,你有什么想法吗?谢谢。
1 个回答
1
我觉得问题出在这行代码上:(word,cnt) = line.strip().split('\t') #\t
这里的split()
方法会把字符串分割成一个列表,然后试图把这个列表的内容赋值给(word, cnt)
。但是这样做不太行,因为列表里的元素数量可能不一样(有时候可能只有一个单词)。
你可能想用类似下面的代码:
for word in line.strip().split('\t'):
mydict[word] = mydict.get(word, 0) + 1
如果你遇到空列表元素的问题,可以用list(filter(None, list_name))
来把它们去掉。
注意:我没有测试这段代码。而且,这只是针对你的第二个例子。