Pular para o conteúdo

Como Ordenar um Dicionário no Python

CodeMDD.io

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:

numbers = {'one': 1, 'three': 3, 'two': 2}
sorted_keys = sorted(numbers)
print(sorted_keys)

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á:

['one', 'three', 'two']

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:

numbers = {'one': 1, 'three': 3, 'two': 2}
# Classificar chaves
sorted_keys = sorted(numbers)
print(sorted_keys)
# Classificar valores
sorted_values = sorted(numbers.values())
print(sorted_values)
# Classificar chaves e valores
sorted_items = sorted(numbers.items())
print(sorted_items)

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á:

['one', 'three', 'two']
[1, 2, 3]
[('one', 1), ('three', 3), ('two', 2)]