2017-10-04 50 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'])}