Como classificar um dicionário por valor em Python
Aprenda como classificar um dicionário Python por seus valores. Descubra a classificação usando sorted(), lambdas de chave personalizada e construção de estruturas de dict ordenadas.
Visão geral
Embora os dicionários sejam criados principalmente para operações de pesquisa rápida usando chaves exclusivas, muitas vezes você precisará classificar os itens do dicionário com base em seus valores. Por exemplo, classificar os alunos pelas notas nos exames, listar os produtos do mais barato ao mais caro ou ordenar a contagem de palavras por frequência.
Em Python, você não pode classificar um dicionário diretamente no local porque as estruturas de dicionário padrão não suportam métodos de ordenação como listas. Em vez disso, a abordagem padrão é recuperar os itens do dicionário como tuplas usando o método `.items()`, classificar essas tuplas usando a função integrada `sorted()` com uma chave de classificação personalizada e, em seguida, reconstruir o dicionário a partir dos itens classificados.
A chave de classificação é normalmente uma função lambda que retorna o segundo elemento da tupla (o valor do dicionário): `key=lambda item: item[1]`. DesdePython 3.7+, os dicionários padrão preservam a ordem de inserção. A reformulação da lista ordenada de tuplas de volta em um dicionário usando o construtor `dict()` retorna um dicionário limpo e ordenado, pronto para iteração.
Saída de código e execução
Este script demonstra a classificação de um dicionário de pontuações de testes por valores em ordem crescente e decrescente usando funções lambda.
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)
# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)
# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)
# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}Implementação passo a passo
- Chame my_dict.items() para recuperar pares de valores-chave como uma lista de tuplas.
- Passe os itens do dicionário para a função sorted().
- Especifique key=lambda item: item[1] para instruir a função sorted() a classificar com base no valor (segundo elemento de cada tupla).
- Passe reverse=True como argumento opcional para classificar os itens em ordem decrescente.
- Reconstrua o dicionário classificado passando a lista classificada de tuplas para o construtor dict().
Perguntas frequentes
O que significa key=lambda item: item[1]?
A função sorted() passa cada elemento da sequência de itens (uma tupla de (chave, valor)) para a função lambda. item[1] extrai o componente de valor, dizendo ao Python para classificar as tuplas por valor.
A classificação de um dicionário afeta sua velocidade de pesquisa de chave?
Não, as pesquisas de chave permanecem com complexidade de tempo médio O(1) porque a classificação altera apenas a sequência de iteração, não a estrutura da tabela hash subjacente.
Tópicos Relacionados
Aprenda como classificar uma lista em Python usando o método sort() e a função sorted(). Descubra exemplos de classificação de chaves personalizadas e ordem reversa.
Como iterar por meio de um dicionário em PythonAprenda como fazer loop ou iterar em um dicionário Python. Descubra métodos para fazer loop em chaves, valores e pares de valores-chave com exemplos limpos e executáveis.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Loops Python
Aprenda como usar loops Python para iterar dados. Domine as práticas recomendadas para loops for, while loops, break, continue e loop com exemplos interativos.
Folha de referências dos métodos do dicionário Python
Aprenda métodos de dicionário Python. Guia de referência completo para inserções, recuperações, atualizações e verificações de pares de valores-chave.
Python vs Ruby: scripts, frameworks web e filosofia
Compare Python e Ruby. Aprenda as diferenças sutis em suas filosofias, elegância de sintaxe, estruturas web (Djangovs Rails) e estilos de execução.