Python检查字典列表中是否存在匹配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} ] # 提取购物车所有prod_id存入集合,判断存在性效率更高 cart_prod_ids = {product['prod_id'] for product in cart_products} print("购物车现有prod_id集合:", cart_prod_ids) # 核心判断:add_product的prod_id是否在购物车中 target_prod_id = add_product['prod_id'] if target_prod_id in cart_prod_ids: print(f"prod_id为{target_prod_id}的商品已存在于购物车中") else: print(f"prod_id为{target_prod_id}的商品不在购物车中") # 遍历购物车输出明细(保留原调试逻辑,修正错误部分) for idx, product in enumerate(cart_products): print(f"\n第{idx+1}个购物车商品:{product}") # 匹配到对应prod_id时输出提示 if product['prod_id'] == target_prod_id: print(f"匹配到相同prod_id的商品:{product['prod_name']}") # 新增商品到购物车 cart_products.append(add_product) print("\n新增商品后的购物车全量数据:", cart_products)
核心逻辑说明
- 直接提取购物车所有商品的
prod_id存入集合,O(1)时间复杂度即可完成存在性判断,比嵌套循环遍历效率更高 - 原代码的判断语句逻辑错误:遍历字典得到的
item是字典的键而非prod_id值,同时cart_products是列表无法直接调用['prod_id']属性 - 新增商品到列表使用
append()方法更符合语义,和原代码+= [add_product]效果一致
内容的提问来源于stack exchange,提问作者Tucker
相关产品推荐
相关产品推荐

