Como Ordenar um Dicionário Python por Valor

  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

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.

Artigo relacionado - Python Dictionary

  • Converter o CSV em Dicionário em Python
  • Obtenha os valores do dicionário em Python