Mapper功能用于查找文本文件中的最小单词

时间:2017-08-16 16:21:41

标签: python hadoop mapreduce mapper

有人可以帮我使用mapper函数和reducer函数来查找文本文件中最小的单词吗?

import sys #importing from the system

smallest = None  
for line in sys.stdin:  #taking input from the system        
  line = line.strip()   #leaving the unwanted whitespaces                   
  words = line.split("\t")  #spliting the words with delimiter TAB
smallest= min([len(word) for word in words])    #finding the smallest word


print ('%s' % (smallest)) #printing the snallest word 

2 个答案:

答案 0 :(得分:0)

我假设你想要找到最短的单词并且不使用列表理解就这样做。

min()接受可选的键进行比较。你可以使用lambda函数来获得单词的长度。

words = ['longest-------', 'medium-----', 'shortest-']
shortest = min(words, key=lambda x: len(x))
print(shortest)

另一种方法可能是使用Python的内置sorted()。

words = ['longest-------', 'medium-----', 'shortest-']
shortest = sorted(words)[-1]
print(shortest)

有关内置函数的详细信息,请参阅documentation

答案 1 :(得分:0)

首先将您的数据附加到此列表k=['1111','222222','a',...]然后 你可以用这个:

print reduce(lambda  x ,y : x if  len(x) < len(y) else y , k)

或者如果您不想使用lambda,请使用list的BIF函数:

min( word for word in k if word) 

这会让你获得列表中的最短元素