我有一个Python字典,看起来像这样:
data = {
"shape" : "rectangle",
"dimensions" : [
{
"length" : 15,
"breadth": 20,
},
{
"length" : 20,
"breadth": 10,
}
]
}
在我的用例中,有超过一百个这样的矩形和它们的尺寸。
我写这个是为了找到面积:
length = data['dimensions'][0]['length']
breadth = data['dimensions'][0]['breadth']
area = length * breadth
print(area)
运行上面的代码将得到300的结果,因为它将字典中的前两个长度和宽度数据(15 * 20)相乘。
如何获得另一个"长度"的相乘值?和";breadth"数据,然后用某种循环把它们加在一起?同样,在我的用例中,会有数百个这样的"长度"。和";breadth"数据条目。
可以使用列表推导式:
[item["length"] * item["breadth"] for item in data["dimensions"]]
这个输出:
[300, 200]
要将它们相加,可以使用sum()
:
sum(item["length"] * item["breadth"] for item in data["dimensions"])
这个输出:
500
将生成器表达式传递给sum
效果很好。
sum(dim['length'] * dim['breadth'] for dim in data['dimensions'])
BrokenBenchmark的答案工作得很好,但是如果区域的临时列表不是必需的,使用生成器表达式而不是列表推导可以避免创建列表。