我正在努力加快这个列表的创建速度。它需要大约5秒钟,这有点太长了。瓶颈位于底部的变体部分。
产品和变体都是peewee查询,并且是一对多的关系。
如果看起来应该有更好的方法来迭代以找到正确的变体。
data = [{
'product_id': product.id,
'title': product.title,
'price': product.price,
'variants': [{'product_variant_id': v.id,
'colour': v.colour}
for v in variants if v.product_id == product.id]
} for product in products]
答案 0 :(得分:2)
在@ user3760780评论时,创建从产品ID到变体的映射,以避免重复迭代变体:
products = {v.product_id: v for v in variants }
然后,列表理解可以更有效:
data = [{
'product_id': product.id,
'title': product.title,
'price': product.price,
'variants': [{'product_variant_id': products[product.id].id,
'colour': products[product.id].colour}]
} for product in products]