[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]]))
タグ:
わからなければ以下の本を参考にしてもいいかも(キーワード検索なので的外れの場合もあります)
わからなければ以下の本を参考にしてもいいかも(機械検索なので的外れの場合もあります)

コメントを残す

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