我有一个词典列表。 说
[{'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
标记进行排序,但无法按上述模式对其进行排序。
答案 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'}]