On 2018-02-17 11:23, fhsxfhsx wrote:
[
  {
    'id': goods.id,
    'name': goods.name,
    'category': gc.name,
    'category_type': gc.type,
  }
  for goods_id in goods_id_list
  for goods is Goods.get_by_id(goods_id)
  for gc is GoodsCategory.get_by_id(goods.category_id)
]

in the short term, it seems for...in [...] is good enough:

> [
>     {
>         'id': goods.id,
>         'name': goods.name,
>         'category': gc.name,
>         'category_type': gc.type,
>     }
>     for goods_id in goods_id_list
>     for goods in [Goods.get_by_id(goods_id)]
>     for gc in [GoodsCategory.get_by_id(goods.category_id)]
> ]

I personally would like to see with...as... syntax allowed in list comprehensions, despite `with` being limited to context managers to date.

> [
>     {
>         'id': goods.id,
>         'name': goods.name,
>         'category': gc.name,
>         'category_type': gc.type,
>     }
>     for goods_id in goods_id_list
>     with Goods.get_by_id(goods_id) as goods
>     with GoodsCategory.get_by_id(goods.category_id) as gc
> ]

..,or maybe `let` reads easier?

> [
>     {
>         'id': goods.id,
>         'name': goods.name,
>         'category': gc.name,
>         'category_type': gc.type,
>     }
>     for goods_id in goods_id_list
>     let goods = Goods.get_by_id(goods_id)
>     let gc = GoodsCategory.get_by_id(goods.category_id)
> ]