我一直在研究一個簡單的 wordcount 程序,該程序在輸入文本時打印出每個單詞的出現(xiàn)次數(shù)。reduce 函數(shù)如下所示:def reducer(self, word, count): yield(word, sum(count))上面的 reducer() 可以正確地計(jì)算輸入文本文件中每個單詞的出現(xiàn)次數(shù)?,F(xiàn)在,我想調(diào)整 reduce() 函數(shù),以便在輸出文件中只打印出現(xiàn) 10 次或更多的單詞。我想,它可能是這樣的:def reducer(self, word, count): if sum(count)>10: emit(word,sum(count))然而這行不通。相反,生成的輸出文件按每個單詞打印 0。我很確定 reducer() 函數(shù)需要調(diào)整,而不是 map 函數(shù)。但是,除了包含 if 語句之外,我想不出任何其他內(nèi)容。我真的很感激一些建議。
2 回答

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊
count 是一個可迭代的,你要迭代它兩次,第二次它是空的,總和為零。
您需要存儲結(jié)果,然后檢查并輸出。否則,邏輯是正確的
def reducer(self, word, count):
_count = sum(count)
if _count > 10:
emit(word, _count)

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個贊
您可以嘗試以下內(nèi)容:
def threshold(x, y, n=10):
return True if y >= n else False
filter(threshold, reducer)
添加回答
舉報
0/150
提交
取消