2016-08-11 39 views
0

我试图找出如何转换以下中分组的项目中新的列表:生成一组

results = [(516L, u'dupe', u'dupe', 106L), (517L, u'dupe', u'dupe', 106L), (518L, u'testing', u'testing', 106L), (519L, u'testing', u'testing', 106L), (523L, u'duplicate', u'duplicate', 88L), (524L, u'duplicate', u'duplicate', 88L)] 

到一个新的列表如下:

results = [ 
[(516L, u'dupe', u'dupe', 106L), (517L, u'dupe', u'dupe', 106L)], 
[(518L, u'testing', u'testing', 106L), (519L, u'testing', u'testing', 106L)], 
[(523L, u'duplicate', u'duplicate', 88L), (524L, u'duplicate', u'duplicate', 88L)] 
] 

在他们全部由该组中的第三个索引分组。

我想是这样的:

[list(v) for k,v in groupby(results[3])] 

但返回的第三个项目,而不是第三个指标。 groupby在这里使用是正确的吗?

回答

2

几乎在那里!

[list(v) for k,v in groupby(results, key=lambda x: x[2])] 
            #^grouping key^0-based index 

输出

[(516L, u'dupe', u'dupe', 106L), (517L, u'dupe', u'dupe', 106L)], [(518L, u'testing', u'testing', 106L), (519L, u'testing', u'testing', 106L)], [(523L, u'duplicate', u'duplicate', 88L), (524L, u'duplicate', u'duplicate', 88L)]] 

如果你不想拉姆达然后from operator import itemgetter然后传中key=itemgetter(2)