我有这些数据:
self.data = [(1, 1, 5.0),
(1, 2, 3.0),
(1, 3, 4.0),
(2, 1, 4.0),
(2, 2, 2.0)]
当我运行此代码时:
for mid, group in itertools.groupby(self.data, key=operator.itemgetter(0)):
对于列表(组)我得到:
[(1, 1, 5.0),
(1, 2, 3.0),
(1, 3, 4.0)]
这就是我想要的.
但是,如果我使用1而不是0
for mid, group in itertools.groupby(self.data, key=operator.itemgetter(1)):
按元组中的第二个数字分组,我只得到:
[(1, 1, 5.0)]
即使有其他元组在1(第二)位置有“1”.
解决方法:
itertools.groupby使用相同的密钥收集连续的项目.
如果您希望所有项目具有相同的密钥,则必须先对self.data进行排序.
for mid, group in itertools.groupby(
sorted(self.data,key=operator.itemgetter(1)), key=operator.itemgetter(1)):