Como Ordenar um Dicionário Python por Valor
- Dicionário de ordenação Python por valor - Obtenha apenas os valores ordenados
-
Utilizando
operator.itemgetter
para ordenar o dicionário Python -
Utilizando a função
lambda
na chave desorted
para ordenar Python no dicionário -
OrderedDict
para 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