Come ordinare un dizionario di Python per valore

  1. Python ordina il dizionario in base al valore - Ottenere solo i valori ordinati
  2. Usare operator.itemgetter per ordinare il dizionario Python
  3. Usando la funzione lambda nella chiave di sorted per ordinare Python il dizionario
  4. OrderedDict per ottenere il risultato compatibile con il dizionario nell’ordinamento del dizionario Python

Il dizionario Python è un tipo di dati senza ordine, quindi non è possibile ordinare il dizionario Python in base alle sue chiavi o ai suoi valori. Ma si potrebbe ottenere la rappresentazione del dizionario Python ordinato in altri tipi di dati come list.

Supponiamo di avere un dizionario come quello qui sotto,

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

Python ordina il dizionario in base al valore - Ottenere solo i valori ordinati

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

Usare operator.itemgetter per ordinare il dizionario Python

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

exampleDict.items restituisce la coppia di elementi chiave del dizionario. key=operator.itemgetter(1) specifica che la chiave di confronto è il valore del dizionario, mentre operator.itemgetter(0) ha la chiave di confronto della chiave del dizionario.

Usando la funzione lambda nella chiave di sorted per ordinare Python il dizionario

Si potrebbe anche utilizzare la funzione lambda per ottenere il tasto di confronto invece di operator.itemgetter.

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

exampleDict.items() restituisce una lista di coppie chiave-valore del dizionario e il tipo di dati del suo elemento è tuple. x è l’elemento di questa tupla, dove x[0] è la chiave e x[1] è il valore. key=lambda x:x[1] indica che la chiave di confronto è il valore degli elementi del dizionario.

Il parametro opzionale reverse potrebbe essere impostato come True se i valori devono essere ordinati in ordine decrescente.

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

OrderedDict per ottenere il risultato compatibile con il dizionario nell’ordinamento del dizionario Python

Il codice di esempio mostrato sopra restituisce il risultato come lista, ma non come tipo di dizionario. Se si vuole mantenere il risultato come tipo compatibile con il dizionario, OrderedDict introdotto da Python 2.7 è la scelta giusta.

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

Il OrderedDict è una sottoclasse di Python dict che supporta i metodi usuali e ricorda anche l’ordine in cui le chiavi vengono inserite per prime.

Articolo correlato - Python Dictionary

  • Copia un dizionario in Python
  • Ottieni la prima chiave nel dizionario Python