【问题标题】:How can I get "price"s value in this dict list?我怎样才能在这个字典列表中获得“价格”的价值?
【发布时间】:2021-06-17 21:18:36
【问题描述】:
products = [
        {"name": "samsung s6", "price": 3000},
        {"name": "samsung s7", "price": 4000},
        {"name": "samsung s8", "price": 5000},
        {"name": "samsung s9", "price": 6000},
        {"name": "samsung s10", "price": 7000}
        ]
for product in products:
    for a, b in product.items():
        print(b)

大家好。我想获取价格键的值并计算我拥有的所有物品的总价。获得它的最佳方法是什么?

【问题讨论】:

  • sum(d["price"] for d in products)

标签: python dictionary key


【解决方案1】:

要获取每个字典的价格键的值,只需使用my_dict["key"] 语法访问它。这是使用 for 循环求和价格的基本方法:

total = 0
for product in products:
    total += product["price"]
print(total)

稍微高级一点的方法是使用列表解析或生成器表达式创建价格序列,并将其传递给内置的sum 函数,如下所示:

total = sum(product["price"] for product in products)

【讨论】:

  • 您指的是已删除的答案。我建议您将 for 循环放入您自己的答案中。
  • 返回:3000 7000 12000 18000 25000 有没有办法只显示总价?
  • @leskof 这只是打印每个价格以向您展示如何访问它们。有关实际总和,请参阅我的编辑。
  • 是的,感谢您的建议。这仍然返回“25000”的 5 倍,但它是实际总价。
【解决方案2】:

简短版:

print( sum( x['price'] for x in products ) )

这与:

newList = []
for x in products:
    newList.append( x['price'] )
out = sum( newList )
print( out )

【讨论】:

  • 这会起作用,尽管我认为使用生成器表达式通常比构造临时列表更好。
  • @alani 在你评论的时候,生成器表达式是我帖子中唯一的东西,所以我不知道你的意思。
  • 不,您的简短版本使用列表理解。您正在创建一个临时列表,然后在对元素求和后将其丢弃。
  • 看我的编辑,短版是原版。我在长版中进行了编辑,因此短版更容易理解。
  • 啊,这里的误解是我不知道在这种情况下列表理解和生成器表达式之间存在差异。感谢您的评论,它很有帮助。
猜你喜欢
  • 2018-04-05
  • 2021-06-07
  • 1970-01-01
  • 2022-12-09
相关资源
最近更新 更多