我正在迭代一大堆形式的元组列表
num_list = [('A15', 2, 'BC', 721.16), ('A21', 3, 'AB', 631.31), ('A42', 4, 'EE', 245.43)]
我试图在第一个元素的每个不同值的第二个元素的滚动5值周期内找到每个元组的最大第四个元素,所有不同的第一个元素值存储在一个名为account_2的集合中并输出以表格
ID Max
A21 400
A15 489
我的代码如下:
first_value = 1
fifth_value = 5
maximum = []
while first_value <= 24 and fifth_value <= 28:
for num_list[0][0] in account_2:
result = max([i for i in num_list if i[1] <= fifth_value and i[1] >= first_value], key = lambda x:x[3])
maximum.extend(result)
first_value += 1
fifth_value += 1
我认为我需要替换0
中的第一个num_list[0][0]
来循环一个变量,所以它遍历列表中的每个元组但是在我的第一个元组的测试中,即在当前案例我收到错误TypeError: 'tuple' object does not support item assignment
。
非常感谢任何帮助。提前致谢
答案 0 :(得分:0)
错误是由行
引起的for num_list[0][0] in account_2:
尝试将值从account_2
分配给numlist[0][0]
,而numlist[0]
是一个元组,这是一个不可变对象。
最低限度是:
while first_value <= 24 and fifth_value <= 28:
for acc in account_2:
try:
result = max([i for i in num_list if i[1] <= fifth_value and i[1] >= first_value and i[0] == acc ], key = lambda x:x[3])
except ValueError:
result = ()
maximum.extend(result)
first_value += 1
fifth_value += 1
try: ... except...
是必需的,因为max
在传递空序列时会引发ValueError。