2017-01-30 5 views
2

У меня есть список словарей. SayСортировка списка словарей в заданном порядке

[{'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'}] 

Я хочу, чтобы отсортировать этот список с desg в порядке A,C,B.

Я могу сортировать его в A,B,C по sorted(list, lambda x: x['desg']) и наоборот с помощью reverse=True флага, но неспособный сортировать его в вышеупомянутой картине.

+2

list.sort (ключ = лямбда х: [ 'desg']) –

+0

отсутствующие запятые. [{'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 '}] –

ответ

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

Смежные вопросы