我有一个包含多个条目的 dict 值。 inventory = {847502: ['APPLES 1LB', 2, 50], 847283: ['OLIVE OIL', 1, 100], 839529: ['TOMATOS 1LB', 4, 25], 483946: ['MILK 1/2G', 2, 50], 493402: ['FLOUR 5LB', 2, 50], 485034: ['BELL PEPPERS 1LB', 3, 50]}我想创建一个函数来获取价值项目的总数,即。sum((2*50)+ (1*100) etc...) 我想我快到了,但这似乎只添加了第一个值....def total_and_number(dict): for values in dict.values(): #print(values[1]*values[2]) total =0 total += (values[1]* values[2]) return(total)total_and_number(inventory)
3 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
Return 和 total 行错位。这将返回 650。
inventory = {847502: ['APPLES 1LB', 2, 50],
847283: ['OLIVE OIL', 1, 100], 839529: ['TOMATOS 1LB', 4, 25],
483946: ['MILK 1/2G', 2, 50], 493402: ['FLOUR 5LB', 2, 50],
485034: ['BELL PEPPERS 1LB', 3, 50]
}
def total_and_number(dict):
total = 0
for values in dict.values():
total += values[1]*values[2]
return(total)
total_and_number(inventory)
守候你守候我
TA贡献1802条经验 获得超10个赞
看起来每个值都是一个列表(尽管它可能应该是一个元组):
itemname, qty, eachprice
所以它应该很容易迭代并直接求和:
sum(qty*eachprice for _, qty, eachprice in inventory.values())
守着星空守着你
TA贡献1799条经验 获得超8个赞
用:
def total_and_number(d):
tot = 0
for k, v in d.items():
tot += v[1]*v[2]
return tot
total_and_number(inventory)
添加回答
举报
0/150
提交
取消