Tamanho de fonte
Alto contraste
Altura de linha

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

Avatar de Ana Maria Gomes Ana Maria Gomes
3 minutos de leitura 5 meses atrás

Ao trabalhar com dados em Python, você pode se deparar com uma situação em que possui uma lista de dicionários e precisa ordenar essa lista por um dos valores do dicionário. Essa é uma tarefa comum na manipulação de dados e o Python oferece várias maneiras de realizá-la. Vamos explorar como ordenar uma lista de dicionários pelo valor de uma chave específica.

pessoa ordenando postits

Usando a Função sorted() com uma Expressão lambda

Um dos métodos mais diretos para ordenar uma lista de dicionários é usando a função sorted() juntamente com uma expressão lambda. A função sorted() retorna uma nova lista, e você pode especificar o critério de ordenação com o parâmetro key.

Aqui está um exemplo de como usá-la:

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}]

Usando operator.itemgetter

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

Ordenando listas de dicionários em Ordem Decrescente

Se você precisar ordenar a lista em ordem decrescente, pode adicionar o parâmetro reverse=True à função sorted():

nova_lista = sorted(lista_para_ordenar, key=itemgetter('name'), reverse=True)

Usando o Método sort()

Alternativamente, você pode usar o método sort(), que modifica a lista no local. Isso significa que a lista original será alterada para a lista ordenada.

Veja como você pode ordenar a lista pela chave ‘name’:

import operator
lista_de_dicionarios = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
lista_de_dicionarios.sort(key=operator.itemgetter('name'))

E se você quiser ordenar pela chave ‘age’:

lista_de_dicionarios.sort(key=operator.itemgetter('age'))

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 ordenar a lista no local. Lembre-se de usar o parâmetro reverse=True se precisar que a lista seja ordenada em ordem decrescente. Com essas ferramentas, você pode organizar seus dados de acordo com suas necessidades.

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

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