Pular para o conteúdo principal

Como classificar um dicionário por valor em Python

Aprenda métodos eficientes para classificar um dicionário por valores em Python. Descubra a classificação por ordem ascendente e descendente e dicas de bônus para a classificação por chave.
Actualizado 30 de jul. de 2024  · 5 min de leitura

A classificação é uma operação fundamental na manipulação de dados, e os dicionários em Python não são exceção. Quer estejamos trabalhando em um projeto complexo de análise de dados ou em um simples script, entender como classificar eficientemente um dicionário por valor pode ser extremamente útil.

Neste artigo, detalhamos os vários métodos para classificar dicionários por seus valores em Python, garantindo que você tenha as ferramentas para organizar seus dados conforme necessário.

A resposta curta: Como classificar um dicionário por valor em Python

Para classificar rapidamente um dicionário por valor, podemos usar a função .sorted() integrada do Python em combinação com uma função lambda. Esse método é direto e eficiente para a maioria dos casos de uso.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Agora, vamos dar um passo atrás e entender os dicionários Python e por que talvez precisemos classificá-los.

O que são dicionários Python?

Python dicionários são um tipo de estrutura de dados que armazena dados em pares de valores-chave. Eles são altamente versáteis e permitem pesquisas, inserções e exclusões rápidas. Aqui está um exemplo simples:

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}

No dicionário acima, os nomes dos alunos são as chaves e suas pontuações são os valores. 

Os dicionários são úteis em muitos cenários, por exemplo, quando precisamos armazenar e recuperar dados com eficiência. Entretanto, há ocasiões em que é necessário classificar esses dados por valores em vez de por chaves - por exemplo, quando queremos classificar os alunos por suas notas.

Como classificar um dicionário por valor em Python

Agora, vamos dar uma olhada mais de perto na função .sorted() em Python e como você pode usá-la especificamente para classificar dicionários por valor.

Como classificar um dicionário por valor usando .sorted()

A função.sorted() é uma ferramenta poderosa e flexível para classificar em Python. Para classificar um dicionário por seus valores, podemos usar uma função lambda para especificar que a classificação deve ser baseada nos valores do dicionário.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
print(sorted_by_values)
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Neste exemplo, student_scores.items() retorna um objeto de visualização que exibe uma lista dos pares de tuplas de valores-chave do dicionário. A função .sorted() classifica esses pares pelos valores (item[1] ), e dict() converte a lista classificada novamente em um dicionário.

Como classificar um dicionário por valor em ordem decrescente ou crescente

Por padrão, a função .sorted() é classificada em ordem crescente. No entanto, dependendo da situação, podemos modificar isso facilmente para classificar em ordem decrescente ou crescente, definindo o parâmetro reverse como True ou False.

Como classificar um dicionário em ordem crescente

Conforme mencionado, um dicionário será classificado em ordem crescente por padrão quando você usar a função.sorted(). Você também pode obter uma ordem crescente definindo o parâmetro reverse como False.

sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)
{'Ben': 75, 'Denver': 85, 'Alex': 88,  'Cyrus': 93}

Como classificar um dicionário em ordem decrescente

Se quisermos classificar em ordem crescente, podemos definir o parâmetro reverse para True.

sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)
{'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}

Bônus: Como classificar um dicionário por chave em Python

Embora este artigo se concentre na classificação por valores, também é útil que você saiba como classificar um dicionário por suas chaves. Isso pode ser feito de forma semelhante usando a função .sorted() .

sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)
{'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}

Para ordem decrescente, basta definir reverse=True:

sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)
{'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}

Conclusão

Classificar um dicionário por seus valores em Python é uma tarefa comum que pode ser realizada facilmente usando a função .sorted(). Independentemente de precisarmos dos dados em ordem crescente ou decrescente, a compreensão dessas técnicas tornará nossas tarefas de manipulação de dados mais diretas e eficientes. Ao dominar esses métodos de classificação, podemos garantir que nossos dados sejam organizados de forma consistente para atender melhor às nossas necessidades.

Perguntas frequentes

Q1: Posso classificar um dicionário por valores se os valores forem cadeias de caracteres em vez de números?

A1: Sim, podemos classificar um dicionário por valores, mesmo que os valores sejam cadeias de caracteres. A função .sorted() classificará os valores alfabeticamente em ordem crescente ou decrescente, da mesma forma que faz com os números.

Q2: Como posso classificar um dicionário por valores se ele contiver dicionários aninhados?

A2: Para classificar um dicionário com dicionários aninhados, precisamos definir uma função de classificação personalizada que extraia e compare os valores aninhados relevantes. Isso requer uma função lambda mais complexa ou uma função separada para lidar com a comparação.

Q3: Posso classificar um dicionário por valores no local sem criar um novo dicionário?

A3: Não, os dicionários em Python são coleções inerentemente não ordenadas a partir de versões anteriores à 3.7 e, embora mantenham a ordem de inserção a partir da Python 3.7, não há nenhum método interno para classificá-los no local. A classificação de um dicionário sempre resulta na criação de um novo dicionário com a ordem desejada.

Q4: Qual é a complexidade de tempo para você classificar um dicionário por valores em Python?

A4: A complexidade de tempo da classificação de um dicionário por valores usando a função .sorted() é O(n log n), em que n é o número de pares de valores-chave no dicionário. Isso ocorre porque o site .sorted() usa internamente o Timsort, um algoritmo de classificação híbrido com essa complexidade.

Q5: A classificação de um dicionário por valores altera o dicionário original?

A5: Não, a classificação de um dicionário por valores usando a função .sorted() cria um novo dicionário. O dicionário original permanece inalterado.

Temas

Aprenda mais sobre Python com estes cursos!

curso

Introduction to Python

4 hr
5.6M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

tutorial

Tutorial de compreensão de dicionário Python

Saiba tudo sobre a compreensão de dicionário do Python: como você pode usá-la para criar dicionários, substituir loops for (aninhados) ou funções lambda por map(), filter() e reduce(), ...!

Sejal Jaiswal

14 min

tutorial

Anexar dicionário Python: Como adicionar pares de chave-valor

Aprenda a acrescentar pares de valores-chave em um dicionário Python usando métodos como a notação de colchetes, .update() para adições em massa e .setdefault() para inserções condicionais.
Samuel Shaibu's photo

Samuel Shaibu

8 min

tutorial

Tutorial de manipulação de dados categóricos de aprendizado de máquina com Python

Aprenda os truques comuns para lidar com dados categóricos e pré-processá-los para criar modelos de aprendizado de máquina!
Moez Ali's photo

Moez Ali

28 min

tutorial

Entendendo a classificação de textos em Python

Descubra o que é a classificação de texto, como ela funciona e os casos de uso bem-sucedidos. Explore exemplos de ponta a ponta de como criar um pipeline de pré-processamento de texto seguido de um modelo de classificação de texto em Python.
Moez Ali's photo

Moez Ali

12 min

tutorial

Pesquisa binária em Python: Um guia completo para uma pesquisa eficiente

Aprenda a implementar a pesquisa binária em Python usando abordagens iterativas e recursivas e explore o módulo bisect integrado para obter funções de pesquisa binária eficientes e pré-implementadas.
Amberle McKee's photo

Amberle McKee

12 min

tutorial

Tutorial de funções Python

Um tutorial sobre funções em Python que aborda como escrever funções, como chamá-las e muito mais!
Karlijn Willems's photo

Karlijn Willems

14 min

See MoreSee More