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

Avatar de Ana Maria Ana Maria
3 minutos de leitura 4 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.

Curso Gratuito

Curso gratuito de Python

Do zero ao primeiro projeto em apenas 2 horas

Criar conta gratuita

Comentários

Comentar
Você tem o Acesso Básico.
Libere seu acesso ao suporte dos professores Garanta seu acesso PRO para tirar todas suas dúvidas com nossa equipe.
Seja PRO