Tamanho de fonte
Alto contraste
Altura de linha
Entrar Cadastrar

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

Avatar de Ana Maria Gomes Ana Maria Gomes
4 minutos de leitura 23/03/2024 • Atualizado 2 meses atrás 5xp

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.

Imagem de um notebook

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
Inicie agora

Comentários

30xp
Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov