Como Ordenar um Dicionário Python por Valor

Jinku Hu 30 janeiro 2023
  1. Dicionário de ordenação Python por valor - Obtenha apenas os valores ordenados
  2. Utilizando operator.itemgetter para ordenar o dicionário Python
  3. Utilizando a função lambda na chave de sorted para ordenar Python no dicionário
  4. OrderedDict para obter o resultado compatível com o dicionário Python na ordenação do dicionário
Como Ordenar um Dicionário Python por Valor

O dicionário Python é um tipo de dados sem ordem, portanto, você não poderia ordenar o dicionário Python por suas chaves ou valores. Mas você poderia obter a representação do dicionário Python ordenado em outro tipo de dados como lista.

Suponha que temos um dicionário como o que se segue,

exampleDict = {"first": 3, "second": 4, "third": 2, "fourth": 1}

Dicionário de ordenação Python por valor - Obtenha apenas os valores ordenados

sortedDict = sorted(exampleDict.values())
# Out: [1, 2, 3, 4]

Utilizando operator.itemgetter para ordenar o dicionário Python

import operator

sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

O exampleDict.items devolve o par de elementos do dicionário de valor chave. key=operator.itemgetter(1) especifica que a chave de comparação é o valor do dicionário, enquanto que operator.itemgetter(0) tem a chave de comparação da chave do dicionário.

Utilizando a função lambda na chave de sorted para ordenar Python no dicionário

Você também poderia lambda função para obter a chave de comparação em vez de operator.itemgetter.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items() devolve uma lista de pares de valores chave do dicionário e o tipo de dados do seu elemento é tuple. O x é o elemento deste tuple, onde x[0] é a chave e x[1] é o valor. key=lambda x:x[1] indica que a chave de comparação é o valor dos elementos do dicionário.

O parâmetro opcional reverse poderia ser definido para ser True se os valores precisarem ser ordenados em ordem decrescente.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
# Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

OrderedDict para obter o resultado compatível com o dicionário Python na ordenação do dicionário

O código de exemplo mostrado acima retorna o resultado como uma lista, mas não como um tipo de dicionário. Se você quiser manter o resultado como tipo compatível com dicionário, OrderedDict introduzido a partir do Python 2.7 é a escolha certa.

from collections import OrderedDict

sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
# Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

O OrderedDict é uma subclasse Python dict que suporta os métodos usuais e também se lembra da ordem em que as chaves são inseridas pela primeira vez.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - Python Dictionary