Ao trabalhar com dados em Python, você frequentemente precisará ordenar uma lista de dicionários com base em valores específicos. Essa é uma tarefa comum ao manipular coleções de dados recebidas de APIs REST, bancos de dados ou arquivos JSON. Python oferece várias maneiras eficientes de ordenar listas de dicionários, e este guia completo mostrará as principais abordagens para organizar essas estruturas de dados aninhadas.
Importante: este guia foca exclusivamente na ordenação de uma lista que contém múltiplos dicionários. Se o seu objetivo é ordenar os pares chave-valor dentro de um único dicionário, confira nosso outro artigo completo sobre como ordenar um dicionário por valor em Python.

Como usar sorted() e lambda para ordenar listas de dicionários
Um dos métodos mais diretos para ordenar uma lista de dicionários em Python é usando a função sorted() juntamente com uma expressão lambda. A função sorted() retorna uma nova lista ordenada, e você especifica o critério de ordenação com o parâmetro key.
Aqui está um exemplo prático de como ordenar uma coleção de dicionários:
lista_para_ordenar = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
nova_lista = sorted(lista_para_ordenar, key=lambda d: d['name'])
print(nova_lista)TestarApós executar o código acima, nova_lista será:
[{‘name’: ‘Bart’, ‘age’: 10}, {‘name’: ‘Homer’, ‘age’: 39}]
A expressão lambda d: d[‘name’] indica ao Python que cada dicionário d na lista de dicionários deve ser ordenado com base no valor da chave ‘name’.
Alternativa com operator.itemgetter para ordenar uma lista
Se você preferir não usar uma expressão lambda, pode usar a função itemgetter do módulo operator. Essa função permite que você especifique a chave do dicionário pela qual deseja ordenar.
Primeiro, você precisa importar a função itemgetter e então você pode ordenar a lista assim:
from operator import itemgetter
lista_para_ordenar = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
nova_lista = sorted(lista_para_ordenar, key=itemgetter('name'))
print(nova_lista)TestarO itemgetter('name') é equivalente à expressão lambda d: d[‘name’], mas com melhor performance em coleções grandes de dicionários.
Ordenando listas de dicionários em ordem decrescente
Para ordenar sua lista de dicionários em ordem decrescente, adicione o parâmetro reverse=True à função sorted():
nova_lista = sorted(lista_para_ordenar, key=itemgetter('name'), reverse=True)
Com isso, a coleção de dicionários será ordenada de Z a A (ou do maior para o menor valor numérico).
Como ordenar um dicionário por valor?
Ordenando a lista de dicionários diretamente com o método sort()
Alternativamente, você pode usar o método sort(), que modifica a lista de dicionários no lugar (in-place). Isso significa que a lista original será alterada diretamente, sem criar uma nova lista.
Veja como você pode ordenar a coleção pela chave ‘name’:
import operator
lista_de_dicionarios = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
lista_de_dicionarios.sort(key=operator.itemgetter('name'))TestarE se você quiser ordenar o conjunto de dicionários pela chave ‘age’:
lista_de_dicionarios.sort(key=operator.itemgetter('age'))
A principal diferença entre sort() e sorted() é que:
- sort() modifica a lista de dicionários original
- sorted() retorna uma nova lista ordenada, mantendo a coleção original intacta
Resumo
Ordenar uma lista de dicionários pelo valor de uma chave específica em Python pode ser feito de forma eficiente usando a função sorted() com uma expressão lambda ou operator.itemgetter. Você também pode usar o método sort() se quiser modificar a lista de dicionários diretamente.
Lembre-se de usar o parâmetro reverse=True se precisar que a coleção seja ordenada em ordem decrescente. Com essas ferramentas, você pode organizar suas estruturas de dados aninhadas de acordo com suas necessidades ao trabalhar com dados de APIs, bancos de dados ou qualquer outra fonte que retorne listas de dicionários em Python.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários
30xp