[python] 多次元リストにおける複数キーでのソート

pythonで、多次元リストで複数のキーでソートする方法。

list.sort(cmp=lambda x,y: cmp([x[2],x[1]],[y[2],y[1]]))

上記の例では3項目目、2項目目の優先順位でソート項目を設定している。
ちなみにxとyには比較する前後の値(この場合は一次元のリスト)が入っている。
前後の行同士を比較するイメージ。
#マニュアルに書いてないけどcmpの引数はリストも受け付けるのね。
CSVファイルなどを読みこんでソートしたいときに便利

import csv
fd=file("hoge,csv","r")
csvfile=csv.reader(fd)
list=[]
for getline in csvfile:
    list.append(getline)
fd.close()
list.sort(cmp=lambda x,y: cmp([x[2],x[1]],[y[2],y[1]]))

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です