以下のリストを真ん中の項をキーに並べたいときは
list = [[1,2,3],[9,3,4],[5,6,7]]
def narabe(x,y):
return x[1]-y[1]
list.sort(narabe)
※returnのあとは
cmp(x[1],y[1])
でも良い。二つのリストのキー項を比べて、
xの方が大きければ+、逆なら-、同じなら0の数を返すなら何でも良い?
もうひとつ
2番目の要素を比較してソートする例。
>>> a = [[5, 'x'], [2, 'b'], [3, 'z'], [1, 'd'], [4, 'y']]
>>> a.sort(cmp = lambda x,y: cmp(x[1], y[1]))
>>> a
[[2, 'b'], [1, 'd'], [5, 'x'], [4, 'y'], [3, 'z']]
# 配列の並び順 [名前],[国語],[算数]
a = [
['Tim', 55, 46 ],
['Jack', 55, 70 ],
['Mathhew', 23, 80 ],
]
「国語」でソート
>>> sorted(a, key=lambda x:x[1], reverse=True)
[['Tim', 55, 46], ['Jack', 55, 70], ['Mathhew', 23, 80]]
「国語」(第1キー)と「算数」(第2キー)でソート
>>> sorted(a, key=lambda x:(x[1],x[2]), reverse=True)
[['Jack', 55, 70], ['Tim', 55, 46], ['Mathhew', 23, 80]]
最終更新:2010年03月08日 06:16