Как суммировать два слова из двух словарей

#python #python-3.x

Вопрос:

 ingredient=[{'product_id': 234, 'product_name':'meat', 'price':3.5}, {'product_id':324, 'product_name':'pickles', 'price':1.0}, {'product_id':146, 'product_name':'roll', 'price':3.0}, {'product_id':289, 'product_name':'chees', 'price':2.5}]
products=[{'product_id':634, 'product_name':'hamburger', 'price':3.5, 'ingredients':[{'product_id':234, 'quantity':1}, {'product_id':324, 'quantity':1}, {'product_id':146, 'quantity':1}]}, {'product_id':777,'product_name':'cheesburger','ingredients':[{'product_id':234, 'quantity':1}, {'product_id':324, 'quantity':1}, {'product_id':146, 'quantity':1}, {'product_id':289, 'quantity':1}]}]
cart=[{'product_id':634, 'quantity':2}, {'product_id':777, 'quantity':4}]

summary_price=0
for item in cart:
    summary_price  = item['price'] * item['quantity']
    print('Summary price is:', summary_price)
 

У меня есть новый словарь, который будет моей корзиной, и я хотел бы, не указывая цену, сколько стоит бургер, например, я хочу импортировать цену из продуктов, и я хотел бы подвести итоги этой корзины, возможно ли это?

Комментарии:

1. Вы могли filter products бы составить список так, чтобы product["product_id] == item["product_id"] оставались только товары, а затем получить их цены, чтобы затем суммировать. Это кажется ненужным, вы могли бы преобразовать свой products список в диктант: {product_id: {name: "hamburger", price: 4.5}}

Ответ №1:

Создание словаря продуктов (или их цен) по идентификатору облегчит это:

 prices = {product["product_id"]: product["price"] for product in products}
summary_price = sum(prices[item["product_id"]] * item["quantity"] for item in cart)