我不熟悉 Pytables 的内部工作(因此这可能与您要查找的内容不相符),但模块中的groupby
函数在itertools
这些类型的情况下非常有用(请注意下面的排序步骤 - 这在这种情况下很重要,以便对groupby
具有相同日期的所有项目进行分组。有关更多信息,请参见此处。):
In [1]: from itertools import groupby
In [2]: from operator import attrgetter
In [3]: class myData(object):
def __init__(self, date, item):
self.date = date
self.item = item
...:
In [4]: l = [myData('2012-01-01', 'thing'), myData('2012-01-01', 'another thing'), myData('2013-01-01', 'and another')]
In [5]: l_sorted = sorted(l, key=attrgetter('date'))
In [6]: for date, my_objects in groupby(l_sorted, key=attrgetter('date')):
...: print date
...: for obj in my_objects:
...: print obj.item
...:
2012-01-01
thing
another thing
2013-01-01
and another
这里的基本模式是获取一个包含要分组的对象的列表/容器。然后,您根据我们稍后将分组的属性(在本例中为date
)对该列表进行排序。然后将该排序列表传递给groupby
函数,该函数将在每次迭代中发出两个值 - 一个key
表示您分组的值(因此这里它将是date
每个组的值)和一个group
包含所有共享对象的迭代器那把date
钥匙。然后,您可以遍历该组,提取item
每个对象的属性。