我有这个元组列表,如下所示:
[(21, 2, 10.0), (21, 104, 20.0), (22, 1, 371.0), (22, 104, 742.0), (23, 1, 114.0), (23, 104, 228.0), (25, 1, 2.0), (25, 104, 2.0)]
每个数字的上下文按顺序是 id、sku_id 和数量。目标是遍历具有相同 ID 的每批元组并执行以下操作:
检查 sku_id 为 104 的任何条目在同一 quote_id 中是否有另一个条目
其他条目的数量必须是前一行的一半。
在上面的示例中,id 为 25 的行将匹配,因为 sku_id 为 1 的行的数量不是 sku_id 104 的行的一半。这应该附加到最终集。
怎样才能做到这一点?
以用来collections.defaultdict制作订单字典:
all_orders = defaultdict(dict) for i, sku, qty in data: all_orders[i][sku] = qty
all_orders就是现在:
{ 21: {2: 10.0, 104: 20.0}, 22: {1: 371.0, 104: 742.0}, 23: {1: 114.0, 104: 228.0}, 25: {1: 2.0, 104: 2.0} }
然后循环查看它们是否符合标准文章来源:https://www.toymoban.com/diary/python/280.html
for i, orders in all_orders.items(): if 104 not in orders: continue if len(orders) == 1: print("Needs to be more than one order if sku is 104") continue half_104_qty = orders[104] / 2 for qty in orders.values(): if qty < half_104_qty: continue else: print("There must be another order half the quantity of the order with sku 104")
文章来源地址https://www.toymoban.com/diary/python/280.html
到此这篇关于Python 在迭代 for 循环时检查其他行的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!