Como Ordenar um Dicionário por Valor no Python
Ordenando um Dicionário em Python: Valores, Chaves e Mais
por Ian Currie
Você possui um dicionário, mas gostaria de ordenar os pares chave-valor. Talvez você tenha tentado passar um dicionário para a função sorted()
, mas não obteve os resultados esperados. Neste tutorial, você aprenderá tudo o que precisa saber se deseja ordenar dicionários em Python.
Neste tutorial, você vai:
- Rever como usar a função
sorted()
- Aprender como obter visões do dicionário para iterar
- Entender como os dicionários são convertidos em listas durante a ordenação
- Aprender a especificar uma chave de ordenação para ordenar um dicionário por valor, chave ou atributo aninhado
- Revisar a compreensão de dicionário e o construtor
dict()
para reconstruir seus dicionários - Considerar estruturas de dados alternativas para seus dados chave-valor
Ao longo do caminho, você também usará o módulo timeit
para cronometrar seu código e obter resultados tangíveis para comparar os diferentes métodos de ordenação de dados chave-valor. Você também considerará se um dicionário ordenado é realmente a melhor opção, pois não é um padrão particularmente comum.
Download Grátis: [Clique aqui para baixar o
Primeiro, você aprenderá alguns conhecimentos fundamentais antes de tentar ordenar um dicionário em Python.
Redescobrindo a Ordem de Dicionários em Python
Se você desejava manter um dicionário ordenado como uma estrutura de dados antes do Python 3.7, precisava usar a classe OrderedDict
do módulo collections
. No entanto, com a garantia de ordem de dicionários a partir do Python 3.7, você pode obter a ordem de inserção apenas usando um dicionário regular.
Agora que você tem uma compreensão básica da ordem de dicionários em Python, vamos explorar como podemos ordenar um dicionário. Vamos começar com a função sorted()
.
Usando a Função sorted()
A função sorted()
permite ordenar uma sequência, como uma lista, em Python. No entanto, ela não funciona diretamente em um dicionário. Ao passar um dicionário para a função sorted()
, o Python não sabe como você quer ordenar os pares chave-valor. Então, vamos ver como podemos resolver isso.
Output:
Observe que a função sorted()
ordena apenas as chaves do dicionário, e não os valores associados a elas. Para ordenar os pares chave-valor, precisamos usar algumas técnicas adicionais.
Obtendo Chaves, Valores ou Ambos de um Dicionário
Para ordenar os pares chave-valor de um dicionário, podemos usar o método items()
, que retorna uma visão do dicionário contendo todos os pares chave-valor.
Output:
Agora temos uma lista ordenada contendo os pares chave-valor do dicionário. A ordem é determinada pela ordem natural das tuplas, que compara primeiro o primeiro elemento de cada tupla e, em seguida, o segundo elemento, se houver.
Se quisermos ordenar pelo valor em vez da chave, podemos usar a função sorted()
novamente, desta vez usando uma lambda function como a chave de ordenação.
Output:
Agora os pares chave-valor são ordenados pelo valor em ordem crescente.
Você também pode ordenar pelo valor em ordem decrescente, simplesmente passando reverse=True
para a função sorted()
.
Output:
Agora os pares chave-valor são ordenados pelo valor em ordem decrescente.
Selecionando um Valor Aninhado com uma Chave de Ordenação
E se quisermos ordenar um dicionário por um valor aninhado em um dicionário? Podemos fazer isso usando múltiplas lambda functions como chave de ordenação.
Output:
Aqui, estamos usando uma lambda function para acessar a chave “altura” em cada dicionário aninhado. Isso nos permite ordenar o dicionário pela altura em ordem crescente.
Convertendo de Volta para um Dicionário
Se você quiser converter a lista ordenada de pares chave-valor de volta para um dicionário, pode fazer isso usando a função dict()
.
Output:
Agora temos um dicionário ordenado com base nos valores.
Considerando Questões Estratégicas e de Desempenho
Ao usar a função sorted()
para ordenar um dicionário, é importante considerar questões estratégicas e de desempenho.
Uma abordagem comum é usar funções especiais de obtenção para aumentar o desempenho e a legibilidade do código. O módulo operator
fornece funções como itemgetter()
que podem ser usadas como a chave de ordenação.
Output:
Neste exemplo, estamos usando o itemgetter(1)
como chave de ordenação para obter o segundo elemento de cada tupla.
Também é importante considerar o desempenho ao usar diferentes estruturas de dados para seus dados chave-valor. O desempenho de diferentes estruturas de dados pode variar dependendo do tamanho e natureza dos seus dados.
Outra consideração importante é o desempenho da ordenação em si. Usar o algoritmo de ordenação certo para o seu problema pode fazer uma grande diferença no desempenho do seu código.
Por fim, é importante avaliar se um dicionário ordenado é realmente a melhor opção para o seu caso de uso. Embora seja uma capacidade útil em certas situações, ordenar um dicionário não é um padrão comum.
Conclusão
Ordenar um dicionário em Python pode ser feito usando a função sorted()
juntamente com uma chave de ordenação adequada. Você pode ordenar os pares chave-valor com base em chaves, valores ou qualquer atributo aninhado.
Ao trabalhar com dicionários e ordenação, é importante considerar questões estratégicas e de desempenho, como o uso de funções especiais de obtenção e a escolha da estrutura de dados correta. Além disso, é importante avaliar se um dicionário ordenado é realmente a melhor opção para o seu caso de uso.
Agora que você conhece as técnicas para ordenar um dicionário em Python, você está pronto para aplicá-las aos seus próprios projetos.
Aproveite a versatilidade e poder dos dicionários em Python, seja para ordenar, pesquisar ou manipular dados chave-valor de maneira eficiente.