簡體   English   中英

從 groupby 返回類似 dict 的結構

[英]returning a dict-like structure from a groupby

這是基本代碼:

from my_parser import data
from itertools import groupby
from collections import Counter

def grades(date=datetime.now().strftime('%Y%m')):
  this_month = self.data.key_by('GRADE').pop(date) # this gives a list of this month
  monthly = dict(groupby(this_month, lambda k: make_letter(k.GRADE))) # group it by letter grade
  c = [{
    'month': k,
    'total': len(x)
  } for k,x in monthly.iteritems()]

但是,字典返回如下:

A : <itertools._grouper object at 0x1033f0c90>
C : <itertools._grouper object at 0x1033f0c50>

是否有可能讓它更像這樣返回,或者使用替代工具來執行相同的概念?

{
  A : [ ... ]
  B : [ ... ]
}

代替

monthly = dict(groupby(this_month, lambda k: make_letter(k.GRADE))) # group it by letter grade

嘗試

monthly = {
    val:list(items)
    for val,items in
    groupby(this_month, lambda k: make_letter(k.GRADE))
}

編輯:您可能需要對 this_month 進行預排序,以使成績按升序排列(或至少使與給定字母對應的所有成績一起出現)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM