2017-01-30 48 views
2

排序字典的名單上有字典的列表。 說在給定的任意順序

[{'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,C,B順序排序此列表DESG。

我可以在A,B,C之前sorted(list, lambda x: x['desg'])之內對其進行排序,使用reverse=True之後的標誌進行反向排序,但無法按上述模式進行排序。

+2

list.sort(鍵=拉姆達X:X [ 'DESG']) –

+0

缺少逗號。 [{ '名稱': '荷馬', '年齡':39, 'DESG': 'A'},{ '名稱': '巴特', '年齡':10, 'DESG': 'A'},{ '名稱': '露', '年齡':27, 'DESG': 'C'},{ '名稱': '約翰', '年齡':18, 'DESG': 'B'},{「名':'雅利安','年齡':20,'desg':'C'}] –

回答

3

首先,定義鍵的順序:

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

現在,排序的順序:

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