python - 从 groupby 返回类似字典的结构

标签 python python-2.7

这是基本代码:

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 进行预先排序,以便成绩按升序排列(或者至少使与给定字母对应的所有成绩一起出现)。

关于python - 从 groupby 返回类似字典的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840706/

相关文章:

python - 如何规范化来自 Wordnet 的相似性度量

python - <Key> 事件的关键代码是否与平台无关?

使用 cv2.imread() 时出现 Python openCV 错误

python - 使变量有条件地全局

python-2.7 - 将句子列表中的单词标记为 Python

python - 导入错误 : No module named pxssh

python - pytest.mark.parametrize 中的 indirect = True/False 是什么意思?

python - df.duplicated() 误报?

python - 了解 python 中的嵌套 lambda 函数行为

python - 如何在odoo 9中创建自动增量字段