2012年11月29日木曜日

Pythonのソート


Pythonでdict型のデータを作った時、キーではなく値でソートしたかった時に調べたメモ。

list.sort()とsorted()

x = [1,9,2,0,7]
y = [1,9,2,0,7]
x.sort()
x
sorted(y)
結果:sort()関数ではリスト自体が変更される。
x = [0,1,2,7,9]
y = [1,9,2,0,7]

というわけで、今回はsorted()を使ってリスト自体は変更しなかった。

dic = {"Yamada":"10", "Takeda":"50", "Itoh": "30", "Kinoshita": "20"}

結果:
dic = {'Kinoshita': '20', 'Takeda': '50', 'Yamada': '10', 'Itoh': '30'}
sorted(dic.items(), cmp=lambda x, y:cmp(int(x), int(y)), key=lambda x:x[1], reverse=True)
= [('Takeda', '50'), ('Itoh', '30'), ('Kinoshita', '20'), ('Yamada', '10')]

key=lambda x:x[1]のところで、どのオブジェクトで比較するのか指定できる。今回はx[1]と指定して、値で比較できる様になった。
cmp引数についても、比較するための関数を定義することで、文字列として与えられた数値をintに変換して比較できている。

参考URL: http://mglab.blogspot.jp/2008/06/python-sortsorted_3738.html

0 件のコメント:

コメントを投稿