按给定的任意顺序对字典列表进行排序

时间:2017-01-30 06:32:11

标签: python

我有一个词典列表。 说

[{'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,Csorted(list, lambda x: x['desg'])对其进行排序,然后使用reverse=True标记进行排序,但无法按上述模式对其进行排序。

1 个答案:

答案 0 :(得分: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'}]