とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

Pythonのラムダ式 sorted関数でタプルや辞書型を並べ替える

WindowsでPython シリーズ その18


前回に引き続きラムダ式をやっていきます。
最近の言語における無名関数の書き方と理解はほぼ必須と言っていいんか無いだろうか。

ラムダ式を3回も取り上げてるのは、pythonを触ってみてこの構文は大事だと思ったからです。
ぜひ書き方をマスターするべし。

sorted関数


sortedはリストを並べ替える関数です。
例えばこんなコード


実行結果
Pythonのラムダ式 sorted関数でタプルや辞書型を並べ替える

鬼シンプルですね。

最も簡単な使い方をすると、指定した引数を昇順に並べ替えます。

並べ替えることが多いのは、リストやタプルや辞書型


さて実際のコーディングで必要となってくるのはリストもそうですが
タプルとか辞書型だと思います。
要するに、「なんかデータの集まりを並べ替えたい。」
そんな時ですね。

というわけで備忘録として色々とコードを書いてみます。


実行結果
Pythonのラムダ式 sorted関数でタプルや辞書型を並べ替える

これまでの集大成


順番に見ていきます。

関数定義

まずは、テストの出力を楽にするために、defを使ってprint文を改造した関数を定義しています。

シンプルなリストの並べ替え

sorted関数のおさらい。リストが昇順に並んでます。

タプルの並べ替え

このあたりからラムダ式の登場です。
sorted関数の細かな説明はマニュアルを見るのが一番いいです。
このエントリでは、最も単純な使い方を記載しています。

まずはテストコードとして、タプルのややこしいを宣言します。
タプルというのは、融通の聞かないリストのことでした。
んで、そのタプルのリストを宣言しています。
fruits = [
("とまとM", 30)
,("とまとL", 50)
,("りんご", 100)
,("オレンジ",40)
]
こんな感じです。
このタプルのリストは、フルーツの種類と金額を羅列したリストを表してます。
これを、金額が高い順に並び替えます。

printLine(sorted(fruits
,key = lambda fruit : fruit[1]
,reverse = True))
こう。
key 引数を見ると、ラムダ式を記載しています。この表現はもうお決まりとして覚えておくほうがよさそう。

sorted関数の第一引数にリストを、第二引数にリストの中のタプルのどのキーかを指定しています。
[1]と書いてるので、[0]:フルーツの種類 [1]:金額 このような指定ですね。

実行結果は見ての通りです。

辞書型(dict)の並べ替え

次に辞書型の並べ替えを見てみます。
fruitsDict = {
"4.とまとM" : 30
,"2.とまとL" : 50
,"1.りんご" : 100
,"3.オレンジ" : 40
}

で、辞書型の宣言。
後のテストコードを分かりやすくするために、フルーツの種類に数字を打ってます。

辞書型に対して、辞書型.items()とすると、タプルを返します。
具体的には 
fruitsDict.items()
を見てください。

で、結果は記載の通り。
sortedのkeyには、"リストの何"を指定するためにラムダ式を指定するというのはお決まりで、
「考えるな感じるんだ!」の精神でひたすら身につけましょう。

おまけとして、sortedのkeyに何も指定しない場合のコードも書いてみました。
結果としては
key = lambda fruit : fruit[0]
と指定したのと同じような結果になります。
デフォルトでタプルの0番目を選択するようです。

とにかくラムダの書き方は慣れよう


今日はこれにて終わり。

ラムダ式は書けるととても便利。
でも書けなかったり読めなかったりすると、非常にストレスになります。
とにかく書いて慣れましょう。

言語仕様を理解するなら、Iteratorとかのキーワードで言語を理解すればいいんだけど、
まずはそんなもんなんかなと覚えるほうが上達への近道です。

頑張りましょう!
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/178-7a48cf5f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad