python – itertools.groupby()没有正确分组

我有这些数据:

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)):
上一篇:Python的内置模块itertools


下一篇:Learn golang: Top 30 Go Tutorials for Programmers Of All Levels