Python MapReduce-在reducer中迭代键和值
我很难理解如何迭代值。我有一个映射器,它将传入如下内容:Python MapReduce-在reducer中迭代键和值,python,hadoop,mapreduce,mrjob,Python,Hadoop,Mapreduce,Mrjob,我很难理解如何迭代值。我有一个映射器,它将传入如下内容: (cat, *): 5 (cat, *): 5 (cat, dog): 1 (pigeon, dog): 1 (hello, world): 1 (cat, dog): 1 (pigeon, dog): 1 (hello, world): 1 我试图找到其中包含*的任何键/值对的总值,以便使用它进行一些统计分析。然后,我尝试将其他键值对的计数之和作为变量,用“*”总值除以它 def reducer(self, pair, counts)
(cat, *): 5
(cat, *): 5
(cat, dog): 1
(pigeon, dog): 1
(hello, world): 1
(cat, dog): 1
(pigeon, dog): 1
(hello, world): 1
我试图找到其中包含*的任何键/值对的总值,以便使用它进行一些统计分析。然后,我尝试将其他键值对的计数之和作为变量,用“*”总值除以它
def reducer(self, pair, counts):
从上面的代码行中,我将如何迭代
从映射器中,我得到如下结果:(项目,邻居),1
或(项目,“*”),1
我知道这些项是生成器对象,所以我必须在for循环中迭代才能真正执行任何操作
编辑:从文本文件读取数据,然后在映射器中传递数据,如下所示:
yield(word1,word2):1
预期产出:
(cat, dog): 0.33333333
计算为cat、dog单词对的数量除以对的总数(cat,*)
为了更清楚一点,我正在尝试用一些可靠的数据结构示例更新您的问题,以获得Plz中的答案。你在处理列表、文件等吗?@trixie如果你举个例子,这会有所帮助。例如,(猫,*)有2条记录,(猫,狗)有2条记录。对于这些记录,预期的输出是什么?(cat,*)有10条记录。例如,我希望将其记录在一个变量中。然后,对于每一个其他单词对,我希望以值为例(Cat,鸽子),3,然后将值除以10(来自Cat变量),这样我可以找到条件概率,因此预期输出类似:(Cat,鸽子)0.033