ソートの安定性について説明します。
ソートの安定性
ソートが安定であるとは、ある列(例えば列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… […]