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)
TestarA 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)
TestarOrdenaçã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)
Testarsorted_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)
TestarOrdenaçã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)
TestarPara 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)
TestarResumo
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.
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
Comentários