Python MapReduce 长度最长的单词并显示最长的单词
Python MapReduce length longest word and show longest word(s)
我正在尝试将 MapReduce 原则与 Python 结合使用,首先将文本中的单词列表与其字符数映射,然后减少以显示最长的单词及其字符数。
See visual explanation
输入是一个包含 3 个句子的简单 text.txt 文件。
请参阅下面我的映射器:
#MAPPER
#!/usr/bin/python
import sys
for line in sys.stdin:
for word in line.strip().split():
print(str(len(word)) + '\t' + word)
感谢您对 Reducer 的帮助。要求的结果是“此文本中最长的单词是 xxxxxxxxx 和 yyyyyyyy,带有 xx 个字符”
这就是你所要求的。这只保留前 5 个单词,这使得排序更容易。循环中的“print”仅用于调试,可以去掉
import sys
top5 = []
for line in sys.stdin:
for word in line.strip().split():
top5.append( (len(word),word) )
top5.sort( reverse=True )
top5 = top5[:5]
print(top5)
print( "Top 5 words by length are:" )
print(top5)
我正在尝试将 MapReduce 原则与 Python 结合使用,首先将文本中的单词列表与其字符数映射,然后减少以显示最长的单词及其字符数。
See visual explanation 输入是一个包含 3 个句子的简单 text.txt 文件。 请参阅下面我的映射器:
#MAPPER
#!/usr/bin/python
import sys
for line in sys.stdin:
for word in line.strip().split():
print(str(len(word)) + '\t' + word)
感谢您对 Reducer 的帮助。要求的结果是“此文本中最长的单词是 xxxxxxxxx 和 yyyyyyyy,带有 xx 个字符”
这就是你所要求的。这只保留前 5 个单词,这使得排序更容易。循环中的“print”仅用于调试,可以去掉
import sys
top5 = []
for line in sys.stdin:
for word in line.strip().split():
top5.append( (len(word),word) )
top5.sort( reverse=True )
top5 = top5[:5]
print(top5)
print( "Top 5 words by length are:" )
print(top5)