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

すべてセット内の3番目のインデックスでグループ化されています。

私はこのような何か試してみました:

[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)に合格しない場合。

関連する問題