Python Itertools groupby Itertools的动态迭代。\u grouper对象

Python Itertools groupby Itertools的动态迭代。\u grouper对象,python,iterator,itertools,Python,Iterator,Itertools,考虑以下数据,其中包括[日期、销售额、销售额]: data=[[datetime.datetime(2012,1,1,2,0,0), 14, 3], [datetime.datetime(2012,1,1,3,0,0), 15, 5], [datetime.datetime(2012,1,1,5,0,0), 11, 4], [datetime.datetime(2012,1,2,1,0,0), 18, 7], [datetime.datetime(2012,1,2,5,0,0), 14, 1],

考虑以下数据,其中包括[日期、销售额、销售额]:

data=[[datetime.datetime(2012,1,1,2,0,0), 14, 3],
[datetime.datetime(2012,1,1,3,0,0), 15, 5],
[datetime.datetime(2012,1,1,5,0,0), 11, 4],
[datetime.datetime(2012,1,2,1,0,0), 18, 7],
[datetime.datetime(2012,1,2,5,0,0), 14, 1],]
我所做的是按日期对数据进行分组,并根据数据进行加权平均。 加权平均函数接受嵌套数组并输出单个值:

def weighted_average(nested_array):
    # data format[[14,3], [15,5], [11,4]]
    # performs weighted average
    return weighted_average
按以下方式对数据进行分组

grouped_sales = itertools.groupby(data, date_key)
我按如下方式计算聚合值:

aggregate_sales = (
(day, weighted_average([day_sales,sales] for date, day_sales, sales in week_sales))
for day, week_sales in grouped_sales)
注意,在上面的例子中,我知道week_sales(itertools.\u grouper)对象包含3个值(date、date_sales、sales),我很容易对它们进行迭代。 如果我不知道一个itertool.\u grouper对象包含多少个要迭代的值,该怎么办。。 让我解释一下

问题从这里开始。有时我有多个项目的销售数据,如[日期、项目1的销售额、#项目1的销售额、项目2的销售额、#项目2的销售额,…]:

data=[(datetime.datetime(2012,1,1,2,0,0), 14, 3, 55, 2],
[datetime.datetime(2012,1,1,3,0,0), 15, 5, 68, 3],
[datetime.datetime(2012,1,1,5,0,0), 11, 4, 42, 1],
[datetime.datetime(2012,1,2,1,0,0), 18, 7, 22, 2],
[datetime.datetime(2012,1,2,5,0,0), 14, 1, 97, 5],]
因此,数据数组中嵌套数组的长度是可变的


我如何迭代itertools.\u grouper对象(week\u sales),它现在包含5个值(在我的情况下可能是可变的),并成对对每个项目进行加权平均?

那么,是否要修改
weighted\u average
以处理任意长度列表的迭代器?
def weighted\u average(L):返回和(L[I]*L[I+1]对于范围(0,len(L),2))/(len(L)/2)
中的i,我想知道如何迭代任意长度的itertools.\u grouper对象,以便将数值传递给加权平均函数。。