もう怖くないPythonの順番変更
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
なんかLineのネタ記事が大盛況…少々驚きです。
さて、本日はPythonのsortedメソッドについて
皆さん、listの内容の順番を並び替えたいこと、ありませんか?
そんな時にこの関数を利用して、順番を変更することができます。
リスト
sortedを実行すれば並び替えをしてくれます。ただ、基本的に昇順ソートです。reverse=Trueにすると降順ソートを可能とします。
>>> list = [1,5,2,3,6,7] >>> sorted(list) [1, 2, 3, 5, 6, 7] >>> sorted(list,reverse=True) [7, 6, 5, 3, 2, 1]
辞書
dict = {1:"abcd",5:"cdfe",3:"aaaa",2:"aaaa"}
key sort
昇順
for key,value in sorted(dict.items()): print key,value
Output
1 abcd 2 aaaa 3 aaaa 5 cdfe
降順
for key,value in sorted(dict.items(),reverse=True): print key,value
Output
5 cdfe 3 aaaa 2 aaaa 1 abcd
Value Sort
key=lambda x:x[1]、すなわちlambda式を書き、中でソートさせたい値を返すように記載すれば問題無いです。
for key,value in sorted(dict.items(),key=lambda x:x[1]): print key,value
Output
2 aaaa 3 aaaa 1 abcd 5 cdfe
Classをソート
こちらもkeyにlamdbaを使い、ソートさせたい値を入れています。
class Foo(object): def __init__(self,number,number2): self.number = number self.number2 = number2 foo_list = [] for i in xrange(10): foo_list.append(Foo(i % 4,i)) for object in sorted(foo_list,key=lambda x:x.number): print object.number,object.number2
Output
0 0 0 4 0 8 1 1 1 5 1 9 2 2 2 6 3 3 3 7
全てのソースコード
#coding:utf-8 """ dictionary の並び替え""" dict = {1:"abcd",5:"cdfe",3:"aaaa",2:"aaaa"} print "key sort,昇順" """ keyでのソート """ for key,value in sorted(dict.items()): print key,value print "key sort,降順" for key,value in sorted(dict.items(),reverse=True): print key,value print "value sort 昇順" """ valueでのソート """ for key,value in sorted(dict.items(),key=lambda x:x[1]): print key,value """ Objectの並び替え """ class Foo(object): def __init__(self,number,number2): self.number = number self.number2 = number2 foo_list = [] for i in xrange(10): foo_list.append(Foo(i % 4,i)) print "class sort 昇順" for object in sorted(foo_list,key=lambda x:x.number): print object.number,object.number2