groupby迭代器不添加到字典理解中的列表

时间:2014-07-08 18:37:13

标签: 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)
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))

但我无法做到。

1 个答案:

答案 0 :(得分:1)

如果您坚持使用groupby,那么您需要确保输入按照您分组的相同键排序,但是,我想我建议您使用defaultdict代替:

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