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

Ana Maria Gomes
4 minutos de leitura

Conteúdos do tutorial

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.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial