我正在尝试从满足数量不超过max_quantity的元组列表中找到最佳值。 输入:
list = [('a', 1, 19), ('b', 2, 19), ('c', 1, 49), ('d', 5, 79)]
代码:
for item in list:
best_value = 0
best_quant = 0
set_value = sum(b[2] for b in item])
set_quant = sum([b[1] for b in item])
if set_value > best_value and set_quant <= max_quant:
best_value = set_value
best_quant = set_quant
print(best_value)
但是,我不断遇到类型错误,该错误发生在set_value的行中,提示“ int”对象不可订阅。我不明白,因为当我遍历列表时,它将是元组,并且我尝试为该元组建立索引。
答案 0 :(得分:2)
在修正了注释中提到的括号问题并更改了list
=> _list
(不要将内置变量/类型用作变量名)之后,只需去除{{1 }}循环并使用列表组合。在外部for
上:
_list
您已经在列表comp _list = [('a', 1, 19), ('b', 2, 19), ('c', 1, 49), ('d', 5, 79)]
best_value = 0
best_quant = 0
set_value = sum([b[2] for b in _list])
set_quant = sum([b[1] for b in _list])
if set_value > best_value and set_quant <= max_quant:
best_value = set_value
best_quant = set_quant
print(best_value)
中进行了迭代,但是无法从已从元组解包的int中获取元素。