unixのuniqコマンドやC++ STLのuniqueと同様に、iterableは予めsortした状態で渡さなければならない。
以下の例では、xs[i], ys[i]にi番目の点の座標が格納されているとして、x軸ごとにyの合計を計算している。
from itertools import groupby from operator import itemgetter def main(): xs = [1,2,3,1,2,3,1,2,3] ys = [1,2,3,4,5,6,7,8,9] points = sorted(zip(xs, ys)) for k,v in groupby(points, key=itemgetter(0)): print (k, sum(y for x,y in v)) if __name__ == '__main__': main()
0 件のコメント:
コメントを投稿