Python - 嵌套的groupby语句

时间:2016-03-28 15:08:46

标签: python sql group-by nested

给定SQL表中的list_of_list,我想分析相邻行的集合,将list_of_list划分为第2列的相等元素,然后是第1列的相等元素。 例如,给定

list_of_list = [[1,1,3,2],
[1,3,3,2],
[1,3,6,2],
[1,3,6,2],
[1,5,5,2],
[1,3,5,2]]

我希望得到以下输出

[1,1,3,2]

[1,3,3,2]

[1,3,6,2]
[1,3,6,2]

[1,5,5,2]

[1,3,5,2]

以下代码有什么问题?

for key1, items1 in groupby(list_of_list, itemgetter(2)):
    for key2, items2 in groupby(items1, itemgetter(1)):
        for i in items2:
            print(i)
            print

它返回以下输出

[1,1,3,2]

[1,3,3,2]

[1,3,6,2]

[1,3,6,2]

[1,5,5,2]

[1,3,5,2]

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的,如果您取消查看最后一个print语句,您的代码就可以正常运行:

for key1, items1 in groupby(list_of_list, itemgetter(2)):
    for key2, items2 in groupby(items1, itemgetter(1)):
        for i in items2:
            print(i)
        print

要获取items2的第一个元素,您可以使用next,如下所示:

first_of_items2 = next(items2, 'items2 was empty')