Pythonのリストを辞書型のvalue値でソートする方法メモ

エキスパートPythonプログラミング改訂2版

エキスパートPythonプログラミング改訂2版

はじめに

今勉強用に作ってるToDoリストのようなアプリケーションで、下のようなデータを扱っている。

tasks = [
    {'TaskId':0, 'TaskTitle':'Fishing'},
    {'TaskId':2, 'TaskTitle':'Cycling'},
    {'TaskId':1, 'TaskTitle':'Running'}
]

このリストを中に入ってる辞書型のTaskIdでソートしたいけど方法が分からなかったので調べた見た。結論からいうとlambda式を使うことでシンプルに書けるみたい。

lambda式

lambda式のシンタックス lambda <arg1>,<arg2>,...<argN>: <expressions>

↑のサイトが分かりやすかったです。

やってみる

こちらによるとリストのソートにはsorted()関数を使う。keyパラメータをlambda式を使って指定すると↓のようになる。

>>> print sorted(tasks, key=lambda x:x['TaskId'])
[{'TaskId': 0, 'TaskTitle': 'Fishing'},
 {'TaskId': 1, 'TaskTitle': 'Cycling'},
 {'TaskId': 2, 'TaskTitle': 'Running'}]

なるほどlambda式を使うとスゴイシンプルに書ける。