2015-10-06 97 views
0

所以我有一个列表,我已经按日期排序,每个日期的记录数。这工作正常,在我的打印输出中,我可以看到计数。但是,我需要从所示的那一个和另一个之后建立一个聚合的数据结构,并且正在尝试将“temp”放在一起。python defaultdict,计算列表不工作

为什么我在连续打印时连续获得0,当打印输出时,它显示我4

created = EmailAddress.objects.all().values_list('email', 'user__date_joined') 
temp = defaultdict(list) 

for key,group in itertools.groupby(created, key=lambda x: x[1].strftime('%Y%m%d')[:11]): 
    print 'Date of signup: ', key 
    print '# of signups: ', (sum(1 for _ in group)) 
    temp[key].append(sum(1 for _ in group)) 

输出

Date of signup: 20150603 
# of signups: 4 
defaultdict(<type 'list'>, {'20150603': [0]}) 

回答

0

group就像是一个发电机。你迭代它的第一次,你“消费”的所有值

你可以只保存在一个变量中的值

for key,group in itertools.groupby(created, key=lambda x: x[1].strftime('%Y%m%d')[:11]): 
    print 'Date of signup: ', key 
    num_signups = (sum(1 for _ in group)) 
    print '# of signups: ', num_signups 
    temp[key].append(num_signups)