gpt4 book ai didi

python - 列表理解中条件的内循环

转载 作者:行者123 更新时间:2023-12-01 02:23:53 25 4
gpt4 key购买 nike

我有一个功能来检查产品及其变体的可用性。两个模型都有 quantity_left 字段。

如果产品有变体,我想从变体中获取quantity_left,否则我将从产品中获取quantity_left

def check_quota(products):
q_list = []
for p in products:
if p.has_variations:
for v in p.variations:
q_list.append(v.quantity_left)
else:
q_list.append(p.quantity_left)
return sum(q_list)

所以上面的函数将返回0任何数字。如果它是表示产品已售完。

上面的代码工作正常,但我想使用列表理解来优化这个函数。

我尝试过,但这似乎不起作用。

return sum([v.quantity_left if p.has_variations else p.quantity_left for p in products for v in i.variations])

如何在内循环上应用if p.has_variations

更新

假设我在衬衫类别下有 3 个产品

[
{
"name":"full sleve",
"has_variations": True,
"variations":[
{
"type": "S size",
"quantity_left": 3
},
{
"type": "L size",
"quantity_left": 0
}
]
},
{
"name":"half sleve",
"has_variations": False,
"quantity_left": 0
},
{
"name":"sleve less",
"has_variations": False,
"quantity_left": 10
}
]

# it will return 13 means not sold out.

最佳答案

下面的代码应该可以解决问题。

def check_quota(products):
return sum(sum(v.quantity_left for v in p.variations) if p.has_variations else p.quantity_left for p in products)

如果没有实际数据或任何所需输入输出的示例,就很难想出可行的解决方案。上面的代码是一个翻译。

<小时/>

从您的编辑来看,您似乎正在使用字典而不是类。如果确实如此,请改用以下内容:

def check_quota(products):
return sum(sum(v['quantity_left'] for v in p['variations']) if p['has_variations'] else p['quantity_left'] for p in products)

关于python - 列表理解中条件的内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com