Python groupby迭代器未在字典理解中添加到列表

Python groupby迭代器未在字典理解中添加到列表,python,dictionary,Python,Dictionary,我有一个返回列表的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) fo

我有一个返回列表的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的所有值,该列表的键是dictionary的键

我尝试过许多变化,如:

blah = dict((k,list(v)) for k,v in groupby(db_results, key=lambda x: x.product_id))

但是我不能正确地进行排序。

如果您坚持使用
groupby
,那么您需要确保输入按分组时使用的键排序,但是,我建议您改用
defaultdict

from collections import defaultdict
blah = defaultdict(list)
for item in db_results:
    blah[item.product_id].append(item)

什么是
db\u结果
?您能否提供一个可运行的示例,用示例数据说明问题?
[g代表g在组中]
不是一个合理的列表理解,因为您从一个简单的
列表(组)
中得到相同的结果。另外,如果k=1001:是一个语法错误,那么您还没有向我们显示您的真实代码。db_结果是一个sqlalchemy对象列表。我在尝试[g代表g in group],因为我认为group是一个迭代器,因为当我在'g'上循环时,它返回迭代器对象。