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 件のコメント:
コメントを投稿