Python字典总和列表

时间:2018-10-17 20:02:10

标签: python list dictionary

我一直试图对字典列表求和,但是我不断收到错误“对象不可迭代”。我真的是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()

2 个答案:

答案 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]))