Ordinare un dizionario in Python

Ordinare un dizionario in Python

Si può ordinare un dizionario in Python per chiave o per valore. Facciamo alcuni esempi pratici di ordinamento in Python in base alle nostre esigenze.

Tutti gli esempi proposti possono essere provati nel compiler online che troverete al seguente link: Python compiler online.

Primo esempio – Ordinare un dizionario in Python per chiave

In questo primo esempio dapprima creiamo un dizionario in Python. Abbiamo poi detto di ordinare per chiave, quindi dobbiamo decidere se seguire un ordine crescente o decrescente, infine dobbiamo richiamare la funzione sul dizionario.

Implementiamo, dunque, una prima soluzione. Per ordinare in senso crescente possiamo utilizzare la funzione sorted sul nostro dizionario, in questo modo:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

for key in sorted(student):
    print(key, student[key])

E se vogliamo un ordinamento decrescente? Basterà semplicemente utilizzare il parametro reverse della funzione sorted, impostandolo a False.

Ecco un esempio di dizionario ordinato in senso decrescente in Python:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

for key in sorted(student, reverse = True):
    print(key, student[key])

Secondo esempio – Ordinare un dizionario in Python per chiave

Cerchiamo adesso una seconda soluzione al problema proposto.

Innanzitutto potremmo ad esempio pensare di utilizzare il metodo keys() sul dizionario, ma cosa succede?

Proviamolo, dunque, con un esempio:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

sorted_key = sorted(student.keys())

for element in sorted_key:
  print(element)

In questo caso si avrà il seguente output:

age
hobby
mail
name
passion

Ovvero avremo le sole chiavi ordinate in senso crescente.

Quindi, anche se uso il metodo dict() non riuscirò in questo modo ad ordinare un dizionario in Python.

E se invece proviamo ad utilizzare il metodo values()?


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

sorted_values = sorted(student.values())

for element in sorted_values:
  print(element)

Il risultato sarà il seguente:

29
Cristina
coding
codingcreatico@gmail.com
swim

Quindi se voglio ordinare un dizionario in Python per chiave cosa devo fare? Quale altra soluzione posso pensare?

Possiamo, ad esempio, utilizzare il metodo items(), che abbiamo studiato in questa lezione: items Python.

Ricordiamo inoltre che questo metodo è utilizzato per restituire l’elenco con tutte le chiavi del dizionario con i suoi rispettivi valori.

Dopo, possiamo nuovamente riconvertire le coppie di tuple in un dizionario utilizzando il metodo dict().

Ecco una possibile soluzione al nostro algoritmo:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

sorted_student = sorted(student.items())
sorted_student_dict = dict(sorted(student.items()))

print(sorted_student_dict)

for element in sorted_student_dict:
  print(element, ': ', sorted_student_dict[element])

Così abbiamo ottenuto tutte le coppie di tuple chiave, valori ordinate in senso crescente. Poi, convertiamolo in dizionario con il metodo dict(). Così riusciamo ad ordinare il dizionario in Python per chiave.

Utilizziamo una funzione per poterla poi utilizzare per creare l’ordinamento su più dizionari:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

def sort_dict(d):
  return dict(sorted(student.items()))

print(sort_dict(student))

Ordinare un dizionario in Python per chiave in senso decrescente

Questa volta utilizziamo il parametro reverse di sorted per creare un ordinamento decrescente sui dizionari. Infatti impostandolo a True l’ordinamento sarà decrescente. Di default il suo valore è False.


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

def sort_dict(d):
  return dict(sorted(student.items(), reverse = True))

print(sort_dict(student))

Per completezza potremmo passare questo parametro anche alla funzione, in questo modo:


student = {
    "name": 'Cristina',
    "age": '29',
    "hobby": 'swim',
    "mail": 'codingcreatico@gmail.com',
    "passion": 'coding'
}

def sort_dict(d, rev):
  return dict(sorted(student.items(), reverse = rev))

print(sort_dict(student, True))

Conclusione

In questa lezione abbiamo affrontato alcuni interessanti esempi su come ordinare un dizionario in Python per chiave, in ordine crescente e decrescente.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Continue Python

Continue Python

L’istruzione continue in Python consente di stoppare l’iterazione corrente per ripartire nuovamente dalla prima istruzione del ciclo (for o while) dove è inserito.

Primo esempio d’uso dell’istruzione continue in Python

Facciamo quindi un semplice esempio per capire meglio il funzionamento.

Inseriamo dei numeri, se il numero è negativo utilizziamo l’istruzione continue per fargli saltare tutte le altre linee di codice e ripartire dall’inizio.

Ecco, di seguito, il semplice programma:


i = 0

while i <3:
   n = int(input('inserisci il numero: '))
   if n < 0:
       continue
   i += 1

In questo caso, dunque, se inseriamo un numero negativo il contatore non viene incrementato ed il ciclo continua ad inserire numeri finchè non sono tutti e 3 positivi.

Provate il codice nel compiler online che troverete al seguente link: Python compiler online.

Secondo esempio d’uso dell’istruzione continue in Python

Facciamo un secondo esempio d’uso dell’istruazione continue in Python.

Stampiamo dei numeri da 1 a 10, saltando il numero 5.

Ecco, dunque, un esempio con il ciclo for:


for i in range(1,11):
  if i == 5:
    continue
  print(i)

L’output prodotto è questo:

1
2
3
4
6
7
8
9
10

Il numero 5 non è stato stampato.

Terzo esempio d’uso dell’istruzione continue in Python

Facciamo un altro esempio per capire meglio il funzionamento di questa istruzione.

Stampare i numeri da 1 a 10 saltando i multipli di 3.

Ecco il codice di esempio:


for i in range(1,11):
  if i % 3 == 0:
    continue
  print(i)

L’output prodotto è il seguente:

1
2
4
5
7
8
10

I numeri 3, 6 e 9 non sono stati stampati.

Conclusione

In questa breve lezione abbiamo spiegato il funzionamento dell’istruzione continue in Python attraverso dei semplici esempi.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Libreria math

12 – Operatori di confronto e booleani

13 – If else

14 – If elif else

15 – If annidati

Len list Python

Len list Python

Il metodo len sull’elemento list in Python, consente di ottenere il numero degli elementi di una lista, ovvero la lunghezza di una lista in Python.

La sintassi del metodo è molto semplice:

len(lista)

La funzione accetta un solo parametro, la lista di cui calcolare la lunghezza. Tale parametro è obbligatorio.

Len list Python – primo esempio

Realizziamo un pratico esempio di utilizzo della funzione per il calcolo della lunghezza di una lista in Python.

Creiamo innanzitutto una lista che contiene le stagioni:

stagioni=[‘Primavera’, ‘Estate’, ‘Autunno’, ‘Inverno’]

Dopo applichiamo la funzione len sull’elelemento list di Python:

len(stagioni)

Possiamo anche stampare il valore usando print:

print(len(stagioni))

Si avrà come risultato 4.

Possiamo anche utilizzare una variabile dove memorizzare il risultato:

len_stagioni = len(stagioni)

Quindi, in seguito, utilizzeremo la varibile len_stagioni all’interno del nostro programma, come ad esempio.

print(len(stagioni))

Len list Python – secondo esempio

Il calcolo della lunghezza di una lista è molto utile quando dobbiamo iterare.

Supponiamo ad esempio di voler stampare tutti gli elementi di una lista. Nel nostro caso di stagioni.

Dapprima presento un approccio errato al problema, spiegandovi le motivazioni.


stagioni = ['Primavera', 'Estate', 'Autunno', 'Inverno']
for i in range(4):
   print(stagioni[i])

In questo caso il codice potrebbe anche andar bene, perchè non andrò mai ad aggiungere un’altra stagione alla lista. Ma pensate a delle liste che si possono facilmente espandere aggiungendo altri elementi.

Per far funzionare il tutto dovrò cambiare ogni volta il parametro all’interno di range! Ma vi sembra corretto? Direi proprio di no!

Allora come risolvo l’algoritmo? Utilizzando la funzione len sulla lista, in questo modo:


stagioni = ['Primavera', 'Estate', 'Autunno', 'Inverno']
for i in range(len(stagioni)):
   print(stagioni[i])

Possiamo anche utilizzare la variabile dove memorizzare la lunghezza della lista.


stagioni = ['Primavera', 'Estate', 'Autunno', 'Inverno']
len_stagioni = len(stagioni)

for i in range(len_stagioni):
   print(stagioni[i])

La funzione len, per il calcolo della lunghezza di una lista in Python, come vedremo più avanti, sarà molto utile quando vogliamo popolare gli elementi della lista senza produrre duplicati. Seguitemi nei prossimi tutorial per scoprire come fare!

Conclusione

Nello sviluppo degli esercizi svilupperemo tante esercitazioni utilizzando la funzione len sull’elemento list di Python.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili