TypeError:“float”对象在遍历元组列表并检查每个元组的第一个str时不可订阅

2024-10-06 18:21:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发我的第一个类程序-它有四个函数,其中一个是main()

第一个函数提示用户输入文件名并打开该文件。main()然后提示用户在该文件中输入一列,以便用户知道要使用哪些数据。

第二个函数生成一个元组列表-每个元组从该列开始一行,它对应的日期(文件中的0列)。第三个函数应该查看函数2中元组列表中元组的日期,并平均每个月的数据(每个月有多个元组)。这就是我遇到错误的地方:TypeError: 'float' object is not subscriptable

这是我的第三个功能:

def average_data(list_of_tuples):

    month_int = 2
    values_to_average_int = 0.0
    data_avg_int = 0.0
    average_divisor_int = 1
    list_of_month_average_tuples = []
    val = 0

    for val in list_of_tuples:
        #month_val = int(val[0][5:7])
        if val[0][5:7] == month_int:
        #if month_val == month_int:
            values_to_average_int += val[1]
            average_divisor_int += 1
            print(values_to_average_int)

        else:
            data_avg_float = float(values_to_average_int / average_divisor_int)
            month_yr_date_str = val[0][5:7] + '-' + val[0][:4]
            month_average_tuple = (data_avg_int, month_yr_date_str)
            list_of_month_average_tuples.append(month_average_tuple)
            #list_of_month_average_tuples(data_avg_int, month_yr_date_str) 
            month_int -= 1
            if month_int == 0:
                month_int = 12
            print(list_of_month_average_tuples)
    return list_of_month_average_tuples

如何更正当前出现的TypeError异常?


Tags: 文件ofto函数用户datavallist
1条回答
网友
1楼 · 发布于 2024-10-06 18:21:03

您正在对元组进行迭代,并将当前元组分配给val。要访问val中的值,只需使用一组括号,而不是两个,因为给定的元组不是二维的。val[5:7]不是val[0][5:7]

另外,在前面提到的for循环之上还有val=0。你不应该像这样给它赋值-这会使val变得不明确。

阅读Pythonfor循环here

相关问题 更多 >