Come ordinare un dizionario di Python per valore

Jinku Hu 30 gennaio 2023
  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
Come ordinare un dizionario di Python per valore

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.

Autore: 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

Articolo correlato - Python Dictionary