Come ordinare un dizionario di Python per valore
- Python ordina il dizionario in base al valore - Ottenere solo i valori ordinati
-
Usare
operator.itemgetter
per ordinare il dizionario Python -
Usando la funzione
lambda
nella chiave disorted
per ordinare Python il dizionario -
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.
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