2017-10-04 54 views
-1

我有以下查询如何存储itertools查询的输出

for key, group in itertools.groupby(r, lambda item: item['b_id']): 
     print {key: [x['a_id'] for x in group]} 

,让输出

{'0d687c94c5f4': ['12345', '67890']} 
{'9ec34be3d535': ['23857', '84596']} 
{None: ['d82ebe9815cc']} 

如何这个存储到一个变量来访问其内容

试图数据= {key:[x ['a_id'] for x in group]}但是只给出了来自循环的最后一个值{None:['d82ebe9815cc']}

>>data 
>>{None: ['d82ebe9815cc']} 
+1

你可以这样做:'数据= [KP :[el ['a_id'] for el in g] for k,g in itertools.groupby(...)}'。但相当肯定有一个相当不错的帖子存储groupby的输出我现在找不到:) –

回答

0

您正在每次迭代时使用一个键创建一个新字典。取而代之的是,一本字典,再加入键在循环:

data = {} 

for key, group in itertools.groupby(r, lambda item: item['b_id']): 
    data[key] = [x['a_id'] for x in group] 

或者,你可以使用字典解析(Python的2.7+):

data = {key: [x['a_id'] for x in group] for key, group in 
     itertools.groupby(r, lambda item: item['b_id'])}