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

PySpark RDD报错TypeError: tuple indices must be integers, not str求解

解决TypeError: tuple indices must be integers, not str的问题

这个错误的根源很清晰:你手里的mentions是字典组成的集合,但代码里的lambda (source, target, span, text)是在尝试把每个元素当成元组来做位置解构——字典根本不吃这一套,自然会抛出索引类型错误。

调整方案:从字典中提取对应字段

你需要把元组解构的逻辑改成从字典键中取值,对应你要的target和text:

  • target对应字典里的_id字段
  • text对应字典里的text字段

修改后的build函数代码如下:

def build(self, mentions, idfs):
    m = mentions\
        .map(lambda mention: (mention['_id'], mention['text']))\  # 从字典提取目标字段
        .flatMapValues(lambda v: ngrams(v, self.max_ngram))\
        .map(lambda v: (v, 1))\
        .reduceByKey(add)

额外注意事项

如果你的mentions还是普通Python列表(不是Spark RDD),那得先把它转成RDD才能用PySpark的算子:

# 假设sc是你的SparkContext实例
mentions_rdd = sc.parallelize(mentions)
# 再把mentions_rdd传入build函数
result = your_instance.build(mentions_rdd, idfs)

这样调整后,代码就能正确识别mentions里的字典结构,不会再抛出类型错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:32:41