我有一个返回列表的db查询。然后我像这样做一本字典理解:
results = {product: [g for g in group] for product, group in groupby(db_results, lambda x: x.product_id)}
问题是字典的值只返回1个值。我认为这是因为该组是一个迭代器。
以下内容返回该组的每个项目,因此我知道它们在那里:
groups = groupby(db_results, lambda x: x.product_id)
for k,g in groups:
if k==1001:
print list(g)
我试图在列表中获取上面g的所有值,其中键是字典的键。
我尝试了许多变体,例如:
blah = dict((k,list(v)) for k,v in groupby(db_results, key=lambda x: x.product_id))
但我无法做到。
答案 0 :(得分:1)
如果您坚持使用groupby
,那么您需要确保输入按照您分组的相同键排序,但是,我想我建议您使用defaultdict
代替:
from collections import defaultdict
blah = defaultdict(list)
for item in db_results:
blah[item.product_id].append(item)