Como ordenar uma lista de dicionários por um valor do dicionário?

Eu tenho uma lista de dicionários e quero que cada item seja classificado por um valor de propriedade específico.

Leve em consideração a matriz abaixo,

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

Quando ordenado por "nome", deve tornar-se

[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))

A "minha_lista" será agora o que você quer.

(3 anos depois) Editado para adicionar:

O novo argumento "chave" é mais eficiente e mais limpo. Uma resposta melhor agora parece ser:

my_list = sorted(my_list, key=lambda k: k['name'])

...a lambda é, IMO, mais fácil de entender do que "operador.itemgetter", mas YMMV.

Comentários (0)

Acho que quiseste dizer:

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

Isto seria resolvido desta maneira:

sorted(l,cmp=lambda x,y: cmp(x['name'],y['name']))
Comentários (0)

Você tem que implementar sua própria função de comparação que irá comparar os dicionários por valores de chaves de nomes. Veja Classificando Mini-HOW TO do PythonInfo Wiki

Comentários (0)