ソートの安定性について説明します。
ソートの安定性
ソートが安定であるとは、ある列(例えば列2)を指定してソートした際に、ある列(例えば 列2)の「同一の値を持つ行」の順序が維持されるということです。
ソートが安定である場合の例は①です。列2を指定してソートをした場合、列2の’O’を値に持つ行の順序は変更されていないことがわかります。ソート前もソート後も上から行1→行2の順序です。
ソートが安定で場合の出力例は②です。ソート前は上から行1→行2の順序でしたが、ソートが安定でない場合は上から行2→行1の順序になります。
from operator import itemgetter, attrgetter
human = [
#名前(列1) , 血液型(列2), 体重(列3)
('tadasi' , 'O', 50 ), #行1
('kiyosi' , 'O', 100 ), #行2
('masasi' , 'A', 70 ), #行3
]
#①安定であるソート
s2 = sorted(human, key=itemgetter(1))
print(*s2, sep="\n")
"""出力
('masasi', 'A', 70)
('tadasi', 'O', 50)
('kiyosi', 'O', 100)
"""
#②ソートが安定でない場合の出力例
"""出力
('masasi', 'A', 70)
('kiyosi', 'O', 100)
('tadasi', 'O', 50)
"""
- s2 = sorted(human, key=itemgetter(1))はhumanの2列目(index 1)を指定してソートしています。itemgetterの詳細な使い方は下記を参照してください。
参考
ソート HOW TO — Python 3.9.4 ドキュメント
ソートの安定性と複合的なソート

コメント
[…] python ソートの安定性ソートの安定性について説明します。knuth256.com2021.08.1… […]