Como Ordenar um Dicionário no Python
Ordenando um Dicionário em Python: Valores, Chaves e Mais
por Ian Currie
Você tem um dicionário, mas gostaria de ordenar os pares de chave-valor. Talvez você tenha tentado passar um dicionário para a função sorted()
, mas não obteve os resultados esperados. Neste tutorial, vamos revisar tudo o que você precisa saber se quiser ordenar dicionários em Python.
Neste tutorial, você vai aprender:
- Revisar 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 como especificar uma chave de ordenação para ordenar um dicionário por valor, chave ou atributo aninhado
- Revisar as compreensões 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 vai considerar se um dicionário ordenado é realmente a melhor opção, pois não é um padrão tão comum.
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.6, deveria usar a classe OrderedDict
no módulo collections
. No entanto, com a garantia de ordem de dicionários no Python 3.7, a necessidade de OrderedDict
diminuiu significativamente.
Agora que você sabe que os dicionários em Python 3.7+ são ordenados, vamos ver como podemos ordená-los especificamente.
Ordenando Dicionários em Python
Há várias maneiras de ordenar um dicionário em Python. Vamos começar com o uso da função sorted()
.
Usando a função sorted()
A função sorted()
permite classificar qualquer sequência em Python, incluindo dicionários. Quando aplicada a um dicionário, a função sorted()
retorna uma lista de suas chaves, que foram classificadas de acordo com uma ordem específica.
Vejamos um exemplo para entender melhor como isso funciona:
Neste exemplo, temos um dicionário chamado numbers
que contém três pares chave-valor. Usamos a função sorted()
para ordenar as chaves do dicionário e atribuímos o resultado à variável sorted_keys
. Em seguida, imprimimos a lista de chaves ordenadas.
A saída desse código será:
Podemos ver que as chaves foram ordenadas alfabeticamente. Isso ocorre porque a função sorted()
usa a ordem natural dos caracteres. Se quisermos uma ordem diferente, precisamos especificar uma chave de classificação.
Obtendo Chaves, Valores ou Ambos de um Dicionário
Ao classificar um dicionário, é comum querer ordenar as chaves, os valores ou ambos. A função sorted()
permite especificar uma função de chave de classificação para personalizar a ordem. Para fazer isso, usamos o argumento key
da função sorted()
.
Vamos dar uma olhada em como podemos obter chaves, valores ou ambos de um dicionário e classificá-los:
Neste exemplo, usamos o mesmo dicionário numbers
dos exemplos anteriores. Agora, porém, usamos sorted()
para classificar as chaves (sorted_keys
), os valores (sorted_values
) e os itens (sorted_items
) do dicionário.
A saída desse código será: