Pythonでソート関数に評価を行う関数を指定する

ソートを行う関数sortedには、引数に評価を行う関数を指定することが出来ます。

文字列リストを数値として評価してソートする例。

>>> data = ('002', '01', '03')
>>> sorted(data)
['002', '01', '03']

数値に変換して評価する関数を作成します。

>>> def int_sort(a,b):
...   return cmp(int(a),int(b))

評価関数を指定してソートすると、数値としてソートすることが出来ます。

>>> sorted(data, cmp=int_sort)
['01', '002', '03']

評価関数が短ければlambdaを使うと、簡潔に書けます。

>>> sorted(data, cmp=lambda x,y: cmp(int(x),int(y)))

sortedの引数keyは、比較する前に実行する関数を受け取ります。

要素にint関数を適用した結果で、比較します。

>>> sorted(data, key=int)
['01', '002', '03']

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください