¿Cómo ordenar una lista de diccionarios por un valor del diccionario en Python?

Resuelto masi asked hace 16 años • 22 respuestas

¿Cómo ordeno una lista de diccionarios por el valor de una clave específica? Dado:

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

Cuando se ordena por name, debería convertirse en:

[{'name': 'Bart', 'age': 10}, {'name': 'Homer', 'age': 39}]
masi avatar Sep 16 '08 21:09 masi
Aceptado

La sorted()función toma un key=parámetro.

newlist = sorted(list_to_be_sorted, key=lambda d: d['name']) 

Alternativamente, puede utilizar operator.itemgetteren lugar de definir la función usted mismo

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 

Para completar, agregue reverse=Truepara ordenar en orden descendente

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
Mario F avatar Sep 16 '2008 14:09 Mario F
import operator

Para ordenar la lista de diccionarios por clave='nombre':

list_of_dicts.sort(key=operator.itemgetter('name'))

Para ordenar la lista de diccionarios por clave='edad':

list_of_dicts.sort(key=operator.itemgetter('age'))
 avatar Sep 16 '2008 15:09