You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

数据采集遇TypeError:tuple indices must be integers or slices, not str问题求助

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

首先,咱们先拆解这个错误的根源:你代码里的某个元组(tuple)被你用字符串去索引了——元组只能用整数或者切片来定位元素,用字符串肯定会报错。结合你的代码和需求,我帮你梳理问题和修正方案:

问题1:元组索引误用

你初始化data_employer的时候,把'No'对应的值设成了元组('Column', 'Sum')

data_employer = {'No': ('Column', 'Sum')}

如果后续你尝试用类似data_employer['No']['Column']的方式去访问,就会触发这个TypeError,因为元组不支持字符串索引。

问题2:逻辑笔误

你的累加代码写错了:sum =+1其实是把sum赋值为+1,正确的累加应该是sum +=1,不然统计出来的永远是1,完全不符合你的需求。

修正后的完整代码

结合你要生成的输出,我帮你补全并修正代码:

# 先定义列名,对应你要统计的14个列
column_names = [
    'Company', 'Booth', 'Full-Time', 'Full-Time Visa Sponsor',
    'Part-Time', 'Internship', 'Freshman', 'Sophomore',
    'Junior', 'Senior', 'Post-Bacs', 'MS', 'PhD', 'Alumni'
]

data_employer = {}
# 先写入表头对应关系
data_employer['No'] = ('Column', 'Sum')

for vari in range(14):
    sum_count = 0
    for row in ReadyColumn:
        # 确保row是可索引的(比如列表或元组),这里用整数索引没问题
        if row[vari] != '':
            sum_count += 1
    # 将统计结果加入字典,用数字作为键,对应(列名, 统计值)的元组
    data_employer[vari] = (column_names[vari], sum_count)

# 打印输出你要的格式
print("No Column Sum")
for key in data_employer:
    if key == 'No':
        continue
    print(f"{key} {data_employer[key][0]} {data_employer[key][1]}")

关键说明

  • 新增了column_names列表,对应你要统计的所有列名,确保每一列的统计结果能准确匹配名称;
  • 把累加变量从sum改成sum_count(避免和内置函数sum()重名),同时修正了累加的写法;
  • 存储统计结果时,用数字作为data_employer的键,对应的值是(列名, 统计数)的元组,后续打印时用整数索引元组元素,就不会触发类型错误了;
  • 打印逻辑完全匹配你期望的输出格式,跳过表头的'No'键,直接遍历数字键输出内容。

这样运行代码后,就能得到你想要的结果啦。

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

火山引擎 最新活动