2016-08-11 68 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)