Continuiamo a spiegare il concetto in Python dei dizionari attraverso degli esempi pratici.

Python dizionari – primo esempio

Scriviamo, dunque, un programma che genera un dizionario di n elementi che contiene delle coppie di valori (i, i * i) quindi valori del tipo {1: 1, 2: 4, 3: 6, … }.

Risolviamo l’algoritmo molto semplicemente. Chiediamo innanzitutto quanti elementi deve avere il dizionario. Dopo, con un ciclo for generiamo i valori.


n = int(input('Quanti elementi vuoi inserire?: '))
d = dict()
for i in range(1, n+1):
    d[i] = i * i

print(d)

Proviamo il codice direttamente nel compiler online sotto:

Python dizionari – secondo esempio

Facciamo un secondo esempi con i dizionari in Python.

Dato un dizionario dei contatti, composto da coppie di valori Nome: Telefono stampare dapprima tutti i valori con il metodo values() sui dizionari e dopo con un ciclo for stampare i telefoni.

Banner Pubblicitario

Ecco una possibile soluzione:


contacts = {
    'Tom': '2345610',
    'Anna': '12345610',
    'Luca': '32345610',
    'Harry': '42345610'
}

contacts_values = contacts.values()
print(valori)

for phone in contacts_values:
    print(phone)

Potremmo anche stampare le keys, utilizzando il metodo keys() sul dizionario e con un ciclo for stampare i nomi. Di seguito ecco una possibile soluzione alla variazione all’algoritmo proposto.


contacts = {
    'Tom': '2345610',
    'Anna': '12345610',
    'Luca': '32345610',
    'Harry': '42345610'
}

contacts_names = contacts.keys()
print(contacts_names)

for name contacts_names:
    print(name)

Python dizionari – terzo esempio

Facciamo un ultimo esempio per fare ancora pratica con i dizionari.

Estrarre 4 carte da un mazzo di 40 ed inserirle in un dizionario. La chiave è costituita dal seme, mentre il valore dal numero.

Ecco una possibile soluzione all’algoritmo proposto (ci accorgeremo che è un procedimento errato e vi spiegherò anche il perché):


import random

def estrai():
  semi = ["Bastoni", "Coppe", "Denari", "Spade"]
  numeri = ["Asso",'Due','Tre','Quattro','Cinque',
  'Sei','Sette',"Fante","Cavallo","Re"]
  result = dict()
  
  for i in range(1,4):
    number = random.choice(numeri)
    seme = random.choice(semi)
    result[seme] = number
  return result

r = estrai()
print(r)

Se provate più volte l’algoritmo, nel compiler online sopra, vi accorgerete che non sempre il dizionario si popola di 4 elementi. Perchè avviene questo?

Come sappiamo, nei dizionari le chiavi devono essere uniche, questo vuol dire che ogni volta che l’algoritmo estrae una chiave che già è stata inserita, va avanti con il conteggio ma non inserisce nulla.

Banner pubblicitario

Dunque la soluzione corretta e più veloce si realizza con il ciclo while:


def estrai():
  semi = ["Bastoni", "Coppe", "Denari", "Spade"]
  numeri = ["Asso",'Due','Tre','Quattro','Cinque','Sei','Sette',"Fante","Cavallo","Re"]
  result = dict()
  print(len(result))
  
  while len(result) < 4:
    number = random.choice(numeri)
    seme = random.choice(semi)
    result[seme] = number
  return result
  
r = estrai()
print(r)

Se provate nel compiler online la soluzione con il while, questa volta il dizionario si riempie esattamente di 4 elementi ogni volta. In questo caso infatti imposto una condizione: finchè il dizionario non ha 4 elementi continua ad estrarre elementi.

Abbiamo in questo modo risolto il problema delle chiavi duplicati per popolare i dizionari in Python.

Conclusioni

In questa lezione abbiamo affrontato alcuni esercizi di Python sui dizionari, nelle prossime lezioni ve ne proporrò tanti altri.

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