我想知道我下面的mapper和reducer函数是否有问题。它是udacity数据科学入门课程项目的一部分
def mapper():
dic={}
for line in sys.stdin:
data=line.strip().split(" ")
for i in data:
dic[i]=1
for key, value in dic.iteritems():
print key,'\t', value
这里的值是以字符串的形式输入的,单词之间用空格隔开,函数返回一个字典,字符串中的每个单词作为“键”,它的计数是1作为“值”。
def reducer():
dic={}
for line in sys.stdin:
data=line.strip().split('\t')
if data[0] in dic.keys():
dic[data[0]]+=1
else:
dic[data[0]]=data[1]
for key, value in dic.iteritems():
print key,'\t',value
这里的值被输入为一个由单词和计数1组成的字符串,用一个制表符隔开。这两种功能的执行方式不同。我没有得到正确的输出。
1条答案
按热度按时间jhdbpxl91#
如果你能告诉我们一些你所期望的产量,那会有帮助的,但是
dic[data[0]]=data[1]
价值data[1]
是一个字符串,因此无法添加数字,例如1
去吧。当然,reducer的要点是,当输入计数不一定总是正确的时候,它可能会运行多次
1
,您可能希望添加实际值,而不只是递增。