我写了一个mapper,它打印出单词对,每个单词对的计数为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线上没有足够的论据,思想?谢谢。
答案 0 :(得分:0)
我认为问题是(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))
删除它们。
免责声明:我没有测试代码。此外,这仅指你的第二个例子