python-3.x - 当我运行此代码时,它会返回每个项目的利润。我怎样才能得到它来计算我到目前为止的总利润:
问题描述
我试图找到一种方法来计算基于项目字典和成本、售价和库存三个值的总利润。当我运行代码时,它返回两个值(每个项目的利润)。那么我怎样才能得到总利润呢?
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)
解决方案
一种简单的方法是使用单行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 个元素上运行。
推荐阅读
- amazon-web-services - 保护连接(外部)到 AWS 的 WIX 子域
- asp.net - 如何向 url.action() 添加参数?
- python - Pandas:从一列的子字符串中提取首字母缩写词,并将其与具有条件的另一列匹配
- android - 居中对齐视图而不与 Android 上的其他视图重叠
- javascript - 在自定义(非本机)组件上使用 v-tooltip
- typescript - 开玩笑的打字稿 - 模拟日期构造函数
- python - 如何让while循环运行?
- php - 通过 PHP discord oauth2(cookie?)保持登录状态
- cron - 如何在 Plesk 中输入 Mailwizz cron 作业?
- pandas - Pandas - 索引包含缺失条目的 DataFrame 时出现意外结果