2015-10-06 101 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)