読者です 読者をやめる 読者になる 読者になる

The jonki

呼ばれて飛び出てじょじょじょじょーんき

【Python】 辞書の配列を辞書の要素でソート

何を言ってるか自分でもよく分からないので結果をまずは見てください。
idというkeyでソートされているのが分かります。

結果
before...
{'name': 'jonki_86', 'id': 86}
{'name': 'jonki_72', 'id': 72}
{'name': 'jonki_84', 'id': 84}
{'name': 'jonki_49', 'id': 49}
{'name': 'jonki_69', 'id': 69}
{'name': 'jonki_31', 'id': 31}
{'name': 'jonki_37', 'id': 37}
{'name': 'jonki_94', 'id': 94}
{'name': 'jonki_11', 'id': 11}
{'name': 'jonki_96', 'id': 96}

after...
{'name': 'jonki_11', 'id': 11}
{'name': 'jonki_31', 'id': 31}
{'name': 'jonki_37', 'id': 37}
{'name': 'jonki_49', 'id': 49}
{'name': 'jonki_69', 'id': 69}
{'name': 'jonki_72', 'id': 72}
{'name': 'jonki_84', 'id': 84}
{'name': 'jonki_86', 'id': 86}
{'name': 'jonki_94', 'id': 94}
{'name': 'jonki_96', 'id': 96}

つまり、辞書型の要素を持つ配列を、それぞれの辞書の要素でソートします。(まぁ上の結果になるってことですorz)
これは【Perl】 ハッシュの配列の要素でソートPython版です。
lambdaって便利。

ソース
import random

# ソート用のデータ作成
list = []
for i in range(10):
	rndint = random.randint(0,100)
	map = {"name":"jonki_"+str(rndint), "id":rndint}
	list.append(map)

print "before..."
for l in list:
	print l

# sort by "id"
list.sort(cmp=lambda x,y: cmp(x["id"], y["id"]))

print "after..."
for l in list:
	print l