我一直试图对字典列表求和,但是我不断收到错误“对象不可迭代”。我真的是python新手,所以我什至不知道我的构造函数是否正确,也许有人可以帮忙?
class Solution:
def __init__(self, solution = []):
self.solution = solution
def getWeight(self):
print(sum(item["weight"] for item in solution))
solution = Solution([
{"name": "diamond", "weight": 20, "value": 1050},
{"name": "laptop", "weight": 550, "value": 320}
])
solution.getWeight()
答案 0 :(得分:3)
您的问题在这一行:
print(sum(item["weight"] for item in solution))
您需要在此处指定“解决方案”是类内部的解决方案变量。 试试:
print(sum(item["weight"] for item in self.solution))
答案 1 :(得分:0)
就solution
是传递给__init__
的参数而言,这是不正确的求和,但通过使用self
实例作为self.solution
可以被类中的其他方法访问。虽然使用( )
的求和方法是正确的,但是另一种方法是使用列表推导来收集项目,然后使用sum
。
def getWeight(self):
print(sum([item["weight"] for item in self.solution]))