Como ordenar um dicionário por valor?

Avatar de Ana Maria Ana Maria
3 minutos de leitura 4 meses atrás

Ordenar um dicionário pelos seus valores é uma tarefa comum na programação Python, especialmente quando se lida com dados lidos de bancos de dados ou outras fontes estruturadas. Neste artigo, vamos explorar como ordenar dicionários pelos seus valores tanto em ordem crescente quanto decrescente.

Ordenação no Python 3.7+ e CPython 3.6

No Python 3.7 os dicionários mantêm a ordem de inserção. Isso significa que, quando você ordena um dicionário, o novo dicionário preservará essa ordem. Veja como você pode ordenar um dicionário pelos seus valores:

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
dicionario_ordenado = {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
print(dicionario_ordenado)
Testar

A saída será um novo dicionário ordenado em ordem crescente pelos valores:

{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}

Alternativamente, você pode usar a função dict() para converter os itens ordenados de volta em um dicionário:

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
dicionario_ordenado = dict(sorted(x.items(), key=lambda item: item[1]))
print(dicionario_ordenado)
Testar

Ordenação em Versões Anteriores do Python

Em versões anteriores do Python, os dicionários não mantêm a ordem. No entanto, você ainda pode ordenar os valores e obter uma representação de um dicionário ordenado usando uma lista de tuplas:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
print(sorted_x)
Testar

sorted_x será uma lista de tuplas ordenadas pelo segundo elemento (o valor) em cada tupla. Se você precisar de um dicionário, pode convertê-lo de volta usando dict(sorted_x).

Ordenação por Valores Usando collections.OrderedDict

Se você quiser manter um dicionário ordenado em versões mais antigas do Python, você pode usar collections.OrderedDict:

import collections
dicionario_ordenado = collections.OrderedDict(sorted_x)
Testar

Ordenação Simples por Valores

Para uma abordagem direta de ordenação por valores, você pode usar:

chaves_ordenadas = sorted(dict1, key=dict1.get)

Isso lhe dará uma lista de chaves ordenadas com base em seus valores correspondentes no dicionário.

Ordenação por Valores com uma Função Lambda

Você também pode ordenar um dicionário pelos seus valores usando uma função lambda:

d = {'one': 1, 'three': 3, 'five': 5, 'two': 2, 'four': 4}
itens_ordenados = sorted(d.items(), key=lambda x: x[1])
print(itens_ordenados)
Testar

Para ordenar em ordem decrescente, basta adicionar reverse=True:

d = {'one': 1, 'three': 3, 'five': 5, 'two': 2, 'four': 4}
itens_ordenados_desc = sorted(d.items(), key=lambda x: x[1], reverse=True)
print(itens_ordenados_desc)
Testar

Resumo

Ordenar um dicionário por valor no Python pode ser feito usando vários métodos, dependendo da versão do Python que você está usando. Nas versões modernas do Python, você pode ordenar dicionários diretamente e manter a ordem. Em versões mais antigas, você pode ordenar os itens e então criar um OrderedDict ou converter os itens ordenados de volta em um dicionário. Para ordenação simples, você pode usar a função sorted() com o parâmetro key definido para dict.get, e para mais controle, você pode usar uma função lambda para especificar o comportamento da ordenação. Seja para ordenar em ordem crescente ou decrescente, esses métodos ajudarão você a organizar seus dados de dicionário de forma eficiente.

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