如何将我的部分代码包含到 'yield' 中?

How do I include part of my code into 'yield'?

感谢您的宝贵时间!

每一种产品,有时会有不止一种型号。我通过 for 循环获得了单个产品中各个模型的模型 'name' 和 'price'。

但是,如何将这些详细信息 'transfer' 连同同一产品的其他变量一起添加到 'yield' 部分?以下是我的尝试,但我没有得到正确的结果。我如何编辑代码,以便它可以在同一产品中记录多个型号(以及价格),只要适用:

    for i in resp['item']['models']:
        if i['name'] is not None:
            model = i['name']
            model_pricing = i['price']


    yield{
        'product': resp.get('item').get('name'),
        'rating': resp.get('item').get('item_rating').get('rating_star'),
        'review numbers': resp.get('item').get('cmt_count'),
        'viewcount': resp.get('item').get('view_count'),
        'likes': resp.get('item').get('liked_count'),
        'model_pricing': model_pricing,
        'model': model,
        'location': resp.get('item').get('shop_location')
        }

您不应将模型属性拆分为两个单独的列表(名称和价格)。原始数据结构比您尝试创建的要好。

你应该在你的 yielded 字典中创建一个 models 属性(我建议使用复数),并让它成为一个包含 name/price 对的列表。这些对可以是元组——或其他一些数据结构(自定义 class 实例,命名为元组、字典...):

yield {
    # ... other attributes ...
    'models': [(model['name'], model['price']) for model in resp['item']['models']],
}

您应该将 yield 保留在 for 循环和 if 语句中。 您可以尝试如下:

for i in resp['item']['models']:
    if i['name'] is not None:
        model = i['name']
        model_pricing = i['price']

        yield {
            'product': resp.get('item').get('name'),
            'rating': resp.get('item').get('item_rating').get('rating_star'),
            'review numbers': resp.get('item').get('cmt_count'),
            'viewcount': resp.get('item').get('view_count'),
            'likes': resp.get('item').get('liked_count'),
            'model_pricing': model_pricing,
            'model': model,
            'location': resp.get('item').get('shop_location')
            }