有人可以帮我使用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
答案 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)
这会让你获得列表中的最短元素