2017-01-30 24 views
2

私は辞書のリストを持っています。私はA,C,Bの順にdesgと、このリストをソートしたい辞書のリストを任意の順序で並べ替える

[{'name':'Homer', 'age':39, 'desg':'A'}, {'name':'Bart', 'age':10, 'desg':'A'}, 
{'name':'Lucy', 'age':27, 'desg':'C'}, {'name':'John', 'age':18, 'desg':'B'}, 
{'name':'Aryan', 'age':20, 'desg':'C'}] 

言う 。

A,B,Csorted(list, lambda x: x['desg'])でソートし、reverse=Trueフラグを使用して逆にすることはできますが、上記のパターンでソートすることはできません。ソートの順に、今

order = {'A':0, 'B':2, 'C':1} 

+2

はlist.sortを(キー=ラムダX:X [ 'desg']) –

+0

カンマがありません。 '名前': 'バート'、 '年齢':10、 'デグ': 'A'}、{'名前': 'ホーマー'、 '年齢':39、 'デス' 'name': 'Lucy'、 'age':27、 'desg': 'C'}、{'name': 'John'、 'age':18、 'desg': 'B'}、{'name ':' Aryan '、' age ':20、' desg ':' C '}] –

答えて

3

まず、あなたの鍵の順序を定義

sorted(l, key=lambda x:order[x['desg']]) 
#[{'name': 'Homer', 'age': 39, 'desg': 'A'}, 
# {'name': 'Bart', 'age': 10, 'desg': 'A'}, 
# {'name': 'Lucy', 'age': 27, 'desg': 'C'}, 
# {'name': 'Aryan', 'age': 20, 'desg': 'C'}, 
# {'name': 'John', 'age': 18, 'desg': 'B'}] 
+0

それは必要に応じて機能しました。ありがとう!! – imchandan

関連する問題