You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MapReduce查找txt文件全部最长单词 现有代码求优化实现预期输出

最长单词MapReduce实现修复方案

完整可运行reducer.py代码

"""reducer.py"""
import sys

results = {}
for line in sys.stdin:
    index, value = line.strip().split('\t')
    # 转整数避免后续比较错误
    word_len = int(index)
    if word_len not in results:
        results[word_len] = value
    else:
        results[word_len] += ' ' + value

# 新增逻辑:获取最大长度及对应单词
max_length = max(results.keys())
longest_words = results[max_length]

# 中文格式输出,需要英文输出可替换为你给出的预期英文句式
print(f"最长的单词长度为{max_length}个字符,对应的单词为:{longest_words}")

核心修改说明

  • 原代码中读取到的长度key是字符串类型,直接比较会出现"9" > "11"的逻辑错误,因此转换为整数类型存储
  • 使用max()方法直接获取所有单词长度的最大值
  • 取出最大长度对应的单词列表后按预期格式输出

可选优化(按需使用)

如果需要排除单词附带的标点(如示例中的sorry,、?等),可以在mapper.py中对拆分后的单词做清洗,修改后的mapper代码如下:

"""mapper.py"""
import sys
import string

for line in sys.stdin:
    for word in line.strip().split():
        # 去除单词首尾的所有标点符号
        cleaned_word = word.strip(string.punctuation)
        # 过滤掉空字符串(比如原内容里单独的标点)
        if cleaned_word:
            print('%s\t%s' % (len(cleaned_word), cleaned_word))

内容的提问来源于stack exchange,提问作者ANNE MARGARET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:36:03