Como Ordenar um Dicionário Python por Valor
- Dicionário de ordenação Python por valor - Obtenha apenas os valores ordenados
-
Utilizando
operator.itemgetterpara ordenar o dicionário Python -
Utilizando a função
lambdana chave desortedpara ordenar Python no dicionário -
OrderedDictpara obter o resultado compatível com o dicionário Python na ordenação do dicionário
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.
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