Python проверяет, совпадает ли значение ключа в списке словарей

#python-3.x

Вопрос:

Я хотел бы проверить prod_id , соответствует ли пара ключ-значение в add_product словаре какой-либо из prod_id пар ключ-значение в cart_products списке словарей. Я использую много операторов печати для тестирования, и я не могу получить значение для if item in [{product['prod_id']}] == [{cart_products['prod_id']}] печати. Полностью выполняемый код. Любая помощь будет признательна.

 product_id = 4 product_name = 'Test name' product_quantity = 2 product_price = 20  add_product = {'prod_id': product_id, 'prod_name': product_name, 'prod_price': product_price, 'prod_quantity': product_quantity}  cart_products = [{'prod_id': 4, 'prod_name': 'Sloths', 'prod_price': 10, 'prod_quantity': 1}, {'prod_id': 5, 'prod_name': 'Test new id', 'prod_price': 20, 'prod_quantity': 1}, {'prod_id': 6, 'prod_name': 'Add all IDs', 'prod_price': 10, 'prod_quantity': 1}, {'prod_id': 5, 'prod_name': 'Test new id', 'prod_price': 20, 'prod_quantity': 1}, {'prod_id': 6, 'prod_name': 'Add all IDs', 'prod_quantity': 1, 'prod_price': 10}]  in_cart = [{product['prod_id'] for product in cart_products}] print(in_cart)  for product in cart_products:  print(f"Show product in cart: {product}")  for index, value in enumerate(product):  print(index, value)  for item in product:  if item in [{product['prod_id']}] == [{cart_products['prod_id']}]:  print(f"test test {item}")  else:  continue  cart_products  = [add_product] print(cart_products)    

Ответ №1:

Я полагаю, что ваше требование состоит в том, чтобы проверить, существует ли товар в вашей корзине, прежде чем добавлять его в корзину. Для этого вы можете следовать приведенному ниже подходу.

 product_id = 4 product_name = 'Test name' product_quantity = 2 product_price = 20 add_product = {'prod_id': product_id, 'prod_name': product_name, 'prod_price': product_price,  'prod_quantity': product_quantity} cart_products = [{'prod_id': 4, 'prod_name': 'Sloths', 'prod_price': 10, 'prod_quantity': 1},  {'prod_id': 5, 'prod_name': 'Test new id', 'prod_price': 20, 'prod_quantity': 1},  {'prod_id': 6, 'prod_name': 'Add all IDs', 'prod_price': 10, 'prod_quantity': 1},  {'prod_id': 5, 'prod_name': 'Test new id', 'prod_price': 20, 'prod_quantity': 1},  {'prod_id': 6, 'prod_name': 'Add all IDs', 'prod_quantity': 1, 'prod_price': 10}]   def product_exists(product: dict, cart: list):  """  A small method which checks if the product is already in cart!  :param product: New product to check  :param cart: Existing cart products  :return:   """  new_prod_id = product.get("prod_id")  existing_prod = [ex_prod for ex_prod in cart if ex_prod.get("prod_id") == new_prod_id]    if existing_prod and len(existing_prod) gt; 0:  return True, existing_prod   return False, None   exists, products = product_exists(add_product, cart_products) if exists:  print(f"Such a product exists as {products}") else:  print("Adding product to cart")  cart_products.append(add_product)