首页 > 解决方案 > 当我运行此代码时,它会返回每个项目的利润。我怎样才能得到它来计算我到目前为止的总利润:

问题描述

我试图找到一种方法来计算基于项目字典和成本、售价和库存三个值的总利润。当我运行代码时,它返回两个值(每个项目的利润)。那么我怎样才能得到总利润呢?

PS-我对编码很陌生,所以任何提示都将不胜感激

shop_items= {
    "banana":(23.50,26.50,100),
     "egg":(13,17,12)
     }

for item in shop_items:
    shop_item=shop_items[item][0]
    cost_item=shop_items[item][1]
    shop_inventory=shop_items[item][2]
    total_cost=shop_inventory*shop_item
    total_sale= shop_inventory*cost_item
    print(total_sale-total_cost)

标签: python-3.x

解决方案


一种简单的方法是使用单行shop_items.items()遍历字典。

>>> shop_items= {
...     "banana":(23.50,26.50,100),
...      "egg":(13,17,12)
...      }
>>> sum([(i[1] - i[0]) * i[2] for k,i in shop_items.items()])
348.0

这使用列表推导将每种产品类型的总利润放在一个列表中,然后sum将利润加在一起。是计算不需要k的字典键。是字典中每个元素的值。('banana', 'egg')i

您可以继续使用for循环,而不是列表推导,

>>> total = 0
>>> for k, i in shop_items.items():
...     total += (i[1] - i[0]) * i[2]

这里的使用items()可能会更清楚一些。循环的每次迭代都从 中获取键和值shop_items。所以第一次它会获取k = 'banana'and i = (23.50, 26.50, 100)。然后你可以用加索引来引用这些值i。如果将语句print(k)放在for循环中,您将看到它一次在 1 个元素上运行。


推荐阅读