TypeError:迭代元组列表时,'float'对象不可下标访问
我正在为课堂编写我的第一个程序,这个程序有四个功能,其中一个是 main()
。
第一个功能会提示用户输入一个文件名,然后打开这个文件。接着,main()
会再提示用户选择文件中的一列,以便知道要处理哪些数据。
第二个功能会生成一个元组的列表,每个元组包含该列的一行数据和对应的日期(日期在文件的第一列,也就是第0列)。第三个功能应该查看第二个功能生成的元组列表中的日期,并计算每个月的数据平均值(因为每个月可能有多行数据)。在这里,我遇到了一个错误: 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
错误呢?
1 个回答
0
你正在遍历一些元组,并把当前的元组赋值给 val
。要访问 val
中的值,只需要用一对括号,而不是两对,因为这个元组不是二维的。也就是说,应该用 val[5:7]
,而不是 val[0][5:7]
。
另外,在你提到的 for
循环之前,你把 val
赋值为 0。这样做是不好的,因为这会让 val
的意思变得模糊。
想了解更多关于 Python 的 for
循环,可以在 这里查看。