Tutoriais

Como Ordenar uma Lista de Dicionários por um Valor do Dicionário em Python

Ana Maria Gomes 23 mar Básico 5xp
Compartilhar

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.

pessoa ordenando postits

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)
Testar

Apó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)
Testar

O 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).

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'))
Testar

E 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 gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Curso
Grátis · 4h 11min

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov