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

按文本长度拆分推特数据集的函数报错求助(TypeError)

解决推特数据过滤的TypeError问题

嘿,我来帮你搞定这个TypeError问题!先看看你的代码里哪里出了问题:

错误原因分析

  1. 索引使用错误:你输入的k1_tweets应该是一个包含多条推特数据的列表,而列表只能用数字索引(比如tweets[0]),但你写了tweet['text']——这是字典的访问方式,直接在列表上用字符串键肯定会触发list indices must be integers or slices, not str的错误。
  2. 逻辑混乱:你的推导式{i for i in tweet if tweet['text'][i] > 50}完全搞错了逻辑:你遍历的是tweet(列表)的索引i,然后试图用tweet['text'][i]去访问,这既混淆了列表和字典的访问方式,也没正确计算文本长度(应该用len()函数)。
  3. 没有保留过滤结果:就算推导式写对了,你也没把它赋值给变量,最后直接返回原tweet,等于完全没做过滤操作。

修正后的代码

假设你的推特数据是字典组成的列表(比如每条推特是{'text': '推文内容', ...}这样的结构),修正后的函数应该是这样:

def filter_short_tweets(tweets):
    # 过滤出文本长度超过50字符的推文,返回新列表
    return [tweet for tweet in tweets if len(tweet['text']) > 50]

# 调用示例,生成过滤后的三组新数据集
filtered_k1 = filter_short_tweets(k1_tweets)
filtered_k2 = filter_short_tweets(k2_tweets)
filtered_k3 = filter_short_tweets(k3_tweets)

代码说明

  • 函数参数改名为tweets(复数形式,更符合“一组数据”的语义)
  • 使用列表推导式遍历每条推特数据,对每条推特:
    • 用tweet['text']获取推文文本(这是字典的正确访问方式,前提是每条推特是包含text键的字典)
    • 用len()函数计算文本长度,判断是否大于50
  • 返回的是过滤后的新列表,不会修改原输入数据,完美符合你“生成三组新数据集”的需求

如果你的推特数据结构不是字典列表(比如是其他格式),可以补充说明具体结构,我再帮你调整!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:25