Pular para o conteúdo

Como ordenar um dicionário no Python de forma fácil?

[

Ordenando um dicionário em Python: Valores, Chaves e Mais

por Ian Currie

Tabela de Conteúdos

Você possui um dicionário, mas gostaria de ordenar as suas pares de chave-valor. Talvez você tenha tentado passar um dicionário para a função sorted(), mas não obteve os resultados esperados. Nesse tutorial, você verá tudo o que precisa saber para ordenar dicionários em Python.

Neste tutorial, você irá:

  1. Revisar como usar a função sorted();
  2. Aprender como obter as visualizações do dicionário para iteração;
  3. Entender como os dicionários são convertidos em listas durante a ordenação;
  4. Aprender como especificar uma chave de ordenação para ordenar um dicionário por valor, chave ou atributo aninhado;
  5. Revisar as compreensões de dicionário e o construtor dict() para reconstruir seus dicionários;
  6. Considerar estruturas de dados alternativas para seus dados de chave-valor.

Ao longo do caminho, você também usará o módulo timeit para medir o tempo de execução do seu código e obter resultados concretos 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, já que não é um padrão muito comum.

Para obter o máximo deste tutorial, você deve conhecer dicionários, listas, tuplas e funções. Com esse conhecimento, você será capaz de ordenar dicionários até o final deste tutorial. Alguma exposição a funções de alta ordem, como funções lambda, também será útil, mas não é um requisito.

Primeiro, você aprenderá alguns conceitos fundamentais antes de tentar ordenar um dicionário em Python.

Redescobrindo a Ordem de um Dicionário em Python

Se você deseja manter um dicionário ordenado como uma estrutura de dados ante

Remova os anúncios

Neste tutorial, você aprenderá:

  • Como usar a função sorted() para ordenar um dicionário
  • Como obter as visualizações de um dicionário para iteração
  • Como os dicionários são convertidos em listas durante a ordenação
  • Como especificar uma chave de ordenação para ordenar um dicionário por valor, chave ou atributo aninhado
  • Como reconstruir um dicionário usando compreensões de dicionário e o construtor dict()
  • Alternativas de estruturas de dados para armazenar dados chave-valor

Ao longo do tutorial, você usará o módulo timeit para medir o tempo de execução de seu código e 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, já que não é um padrão muito comum.

Para aproveitar ao máximo este tutorial, você deve ter conhecimentos sobre dicionários, listas, tuplas e funções. Com esses conhecimentos, você poderá ordenar dicionários ao final deste tutorial. Algum conhecimento sobre funções de ordem superior, como funções lambda, também será útil, mas não é obrigatório.

Primeiro, você aprenderá alguns conhecimentos básicos antes de tentar ordenar um dicionário em Python.

Redescobrindo a Ordem de um Dicionário em Python

Se você deseja manter um dicionário ordenado como uma estrutura de dados antes do Python 3.7, precisa usar uma estrutura de dados alternativa como OrderedDict da biblioteca collections. No entanto, a partir do Python 3.7, você pode contar com a ordem de inserção ser preservada em dicionários regulares.

Entendendo o que Significa Ordenar um Dicionário

Ao falar em ordenar um dicionário em Python, você precisa esclarecer o que deseja ordenar. Um dicionário possui pares de chave-valor, mas como você pode querer ordená-los?

Ao discutir a ordenação de um dicionário, você pode querer ordenar os pares de chave-valor de acordo com as chaves, de acordo com os valores ou até mesmo de acordo com atributos aninhados se os valores forem, por exemplo, objetos. A chave é entender quais serão os critérios de ordenação.

Ordenando Dicionários em Python

Usando a função sorted()

A forma mais direta de ordenar um dicionário em Python é usar a função sorted(). Quando você passa um dicionário para a função sorted(), ela retorna uma lista de tuplas, onde cada tupla contém um par de chave-valor do dicionário.

dicionario = {"b": 1, "a": 2, "c": 3}
dicionario_ordenado = sorted(dicionario.items())
print(dicionario_ordenado)

Saída:

[('a', 2), ('b', 1), ('c', 3)]

Observe que a lista de tuplas está classificada em ordem alfabética com base nas chaves do dicionário. Se os valores do dicionário forem do tipo numérico, você pode usar a função sorted() com o parâmetro key para ordenar com base nos valores.

dicionario = {"b": 1, "a": 2, "c": 3}
dicionario_ordenado = sorted(dicionario.items(), key=lambda x: x[1])
print(dicionario_ordenado)

Saída:

[('b', 1), ('a', 2), ('c', 3)]

Nesse exemplo, o dicionário foi ordenado com base nas chaves. Se você deseja ordenar com base nos valores, pode usar o parâmetro key com uma função lambda que retorna o valor correspondente para cada chave.