Python将元组从while循环连接到列表中

时间:2018-05-15 08:35:21

标签: python list tuples typeerror

我正在迭代一大堆形式的元组列表

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

非常感谢任何帮助。提前致谢

1 个答案:

答案 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。