Ordina dizionario per chiave in Python

Azaz Farooq 10 ottobre 2023
  1. Python Ordina dizionario per chiave con il metodo dict.keys()
  2. Python Ordina dizionario per chiave con il metodo dict.items()
  3. Python ordina il dizionario per chiave con il metodo OrderedDict()
  4. Ordina dizionario in ordine inverso in Python
  5. Dizionario di ordinamento Python con metodo di funzione key personalizzato
Ordina dizionario per chiave in Python

Il dizionario Python è lo stesso della tabella hash che conserva le voci valutando gli hash delle chiavi e la sequenza delle voci è impossibile da anticipare. Questo articolo introdurrà come ordinare il dizionario per chiave in Python.

Python Ordina dizionario per chiave con il metodo dict.keys()

Usiamo il dizionario seguente come esempio.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}

L’output di dict.keys() è

dict_keys(["hello", "at", "test", "this"])

Potremmo creare un nuovo dizionario ordinato da questo lista di chiavi non ordinato.

sorted(dict.keys())

Produzione:

['at', 'hello', 'test', 'this']

Applichiamo ripetutamente l’ordinamento a questo lista ordinato selezionando ciascuna voce dal dizionario.

for key in sorted(dict.keys()):
    print(key, " :: ", dict[key])

Produzione:

at  ::  23
hello  ::  56
test  ::  43
this  ::  43

Python Ordina dizionario per chiave con il metodo dict.items()

Possiamo anche ordinare un dizionario per chiave in Python con il metodo dict.items().

Genererà una lista che contiene coppie chiave-valore?

dict.items()

Produzione:

dict_items([("hello", 56), ("at", 23), ("test", 43), ("this", 43)])

Potremmo creare una lista organizzato con la seguente funzione. Ordinerà le voci del dizionario in base ai valori chiave.

sorted(dict.keys())

Produzione:

['at', 'hello', 'test', 'this']

Ora per produrre la coppia chiave-valore di ordinamento dal dizionario, utilizziamo il codice seguente.

for elem in sorted(dict.items()):
    print(elem[0], " ::", elem[1])

Produzione:

at  :: 23
hello  :: 56
test  :: 43
this  :: 43

In termini di complessità, è più potente dell’approccio precedente. Dato che non abbiamo bisogno di controllare il valore-chiave dopo aver ordinato l’lista iterabile, come in dict.key().

Python ordina il dizionario per chiave con il metodo OrderedDict()

In alternativa, possiamo ordinare gli elementi del dizionario per valore-chiave utilizzando il modulo collections.

import collections

d = {2: 13, 1: 9, 4: 25, 3: 0}
result = collections.OrderedDict(sorted(d.items()))
print(result)

Produzione:

OrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])

Ordina dizionario in ordine inverso in Python

In precedenza, abbiamo ordinato gli elementi del dizionario in ordine crescente. Ora discutiamo alcuni modi per ordinare gli elementi del dizionario in ordine decrescente.

La sintassi è:

sorted(iterable_sequence, reverse=True)

Il codice seguente ha ordinato e invertito gli elementi del dizionario.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}
for elem in sorted(dict.items(), reverse=True):
    print(elem[0], " ::", elem[1])

Il parametro reverse=true assicura che il dizionario ordinato sia invertito.

Produzione:

this  :: 43

test  :: 43

hello  :: 56

at  :: 23

Dizionario di ordinamento Python con metodo di funzione key personalizzato

Questo metodo ordinerà gli elementi del dizionario utilizzando la lunghezza della stringa key.

sorted(iterable_sequence, key=Function)

La funzione lambda che restituisce la dimensione della stringa è data al parametro key.

listofTuples = sorted(dict.items() ,  key=lambda x: len (x[0] ) )
for elem in listofTuples :
    print(elem[0] , " ::" , elem[1] )

Produzione:

at  :: 23

test  :: 43

this  :: 43

hello  :: 56

Articolo correlato - Python Dictionary