将订单改为类对象存储后,如何检查新订单ID是否存在?
检查订单类数组中是否存在指定ID的简便方法
方法一:用any()配合生成器表达式
这是最直接的写法,无需额外维护数据结构,适合订单数量不多的场景:
# 先定义订单类 class Order: def __init__(self, id, name, products, total): self.id = id self.name = name self.products = products self.total = total # 假设orders是存储所有订单对象的数组 orders = [Order(1, "订单A", ["商品1"], 100), Order(2, "订单B", ["商品2"], 200)] new_order_id = 1 # 检查ID是否存在 if any(order.id == new_order_id for order in orders): print("订单已存在") # 执行订单已存在的处理逻辑
any()会遍历orders中的每个订单对象,一旦找到ID匹配的项就立即返回True,无需遍历全部元素。
方法二:维护订单ID集合(高效频繁检查)
如果需要频繁执行ID检查操作,建议单独维护一个存储订单ID的集合,集合的in操作时间复杂度为O(1),比遍历数组高效得多:
# 初始化订单数组和ID集合 orders = [Order(1, "订单A", ["商品1"], 100), Order(2, "订单B", ["商品2"], 200)] order_ids = {order.id for order in orders} new_order_id = 2 # 检查ID是否存在 if new_order_id in order_ids: print("订单已存在") # 执行处理逻辑 # 新增订单时,同步更新集合 new_order = Order(3, "订单C", ["商品3"], 300) orders.append(new_order) order_ids.add(new_order.id)
每次新增订单后记得把ID加入集合,就能保证后续检查的准确性和高效性。
内容的提问来源于stack exchange,提问作者user20045719
相关产品推荐
相关产品推荐

