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

如何在Mapper输出结果上使用groupby进行分组处理?

解决方案

你需要修改代码以实现按字母分组并收集对应的整数元组列表,以下是调整后的代码:

from itertools import groupby
from operator import itemgetter
import sys

def read_mapper_output(file):
    for line in file:
        # 拆分每行,得到 [字母, 数字1, 数字2, 数字3] 的列表
        yield line.strip().split()

# 读取mapper输出
data = read_mapper_output(sys.stdin)
# 按字母排序,确保相同字母的行连续,groupby才能正确分组
data_sorted = sorted(data, key=itemgetter(0))

# 按字母分组处理
for key, keygroup in groupby(data_sorted, itemgetter(0)):
    # 将每组的数字部分转为整数元组,收集成列表
    tuple_list = [tuple(map(int, item[1:])) for item in keygroup]
    # 按要求格式输出
    print(f"{key} {tuple_list}")

关键修改说明:

  • 排序处理:添加data_sorted = sorted(data, key=itemgetter(0)),因为itertools.groupby只会将连续相同的key归为一组,排序后能确保所有同字母的行被集中处理。
  • 元组生成:替换原字符串拼接逻辑,通过tuple(map(int, item[1:]))将每行的三个数字字符串转为整数元组,再收集成列表。
  • 格式化输出:使用f-string简化输出格式,直接打印字母和对应的元组列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:33:11