如何修复此类型错误?

Posted

技术标签:

【中文标题】如何修复此类型错误?【英文标题】:How can I fix this Type Error? 【发布时间】:2018-07-27 02:08:47 【问题描述】:

当我尝试执行这个函数时,我得到一个类型错误

for i, value in enumerate(line_score):
     print(i, value)
     if (value["GAME_SEQUENCE"] != game_sequence):
           game_sequence += 1

TypeError:字符串索引必须是整数

line_sccore 的值为

         GAME_DATE_EST  GAME_SEQUENCE     GAME_ID     TEAM_ID  
0  2018-02-15T00:00:00              1  0021700865  1610612743   
1  2018-02-15T00:00:00              1  0021700865  1610612749   
2  2018-02-15T00:00:00              2  0021700866  1610612747   
3  2018-02-15T00:00:00              2  0021700866  1610612750 

print(i, value) 给出 0 GAME_DATE_EST

【问题讨论】:

感谢@DyZ,我该如何解决这个问题?? 你认为value["GAME_SEQUENCE"] 是什么意思?如果value 是一个字符串,那么这是无效的,正如错误消息所说,你想做什么? 如果value 是一个字符串“GAME_DATE_EST”,你为什么期望value["GAME_SEQUENCE"] 可以工作? @DyZ 那么我该如何检查 game_sequence 呢? line_score的类型是什么?它可能是熊猫数据框吗? game_sequence的类型和值是什么? 【参考方案1】:

value['game-sequence'] 引用了被称为'value'的字典,显然'value'不是你想象的字典,而是一个字符串,实际上你可以引用字符串中的字符像列表一样,需要整数

【讨论】:

【参考方案2】:

我假设您想计算 game_sequence 中的游戏数量,而 game_sequence 是一个简单的变量?

我使用了你提供的这个数据集。

line_score = pd.DataFrame("GAME_DATA_EST":["2018-02-15T00:00:00","2018-02-15T00:00:00","2018-02-15T00:00:00","2018-02-15T00:00:00"],
                       "GAME_SEQUENCE":[1,1,2,2],
                       "GAME_ID":["0021700865","0021700865","0021700866","0021700866"],
                       "TEAM_ID":[1610612743,1610612749 ,1610612747,1610612750])

如果 GAME_SEQUENCE 的值(在您的数据集中)不同,此代码会为 game_sequence 添加 +1。

game_sequence = 0
for i, value in enumerate(line_score["GAME_SEQUENCE"]):
    #print(i, value)
    if (value != game_sequence):
        game_sequence += 1

# Alternative solution
game_sequence = 0
for i, value in enumerate(line_score):
    #print(i, value)
    if (line_score["GAME_SEQUENCE"][i] != game_sequence):
        game_sequence += 1

如果你的意思不同,请告诉我。

【讨论】:

以上是关于如何修复此类型错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复此错误:未捕获(承诺)类型错误:无法读取未定义的属性(读取“长度”)

如何修复此错误未处理的异常:类型“字符串”不是“索引”类型“int”的子类型

如何修复“TS2769:没有超载匹配此调用”

如何修复此错误类型“_InternalLinkedHashMap<String, dynamic>”不是“FutureOr<List<dynamic>>”类型的子类

使用 React Context 时如何修复此错误

使用前向声明时如何修复“字段类型不完整”错误