dict Python

dict Python

We continue to explain the use of dict in Python through practical examples.

dict Python – first example

So let’s write a program that generates a dictionary of n elements that contains pairs of values ​​(i, i * i) and therefore values ​​of the type {1: 1, 2: 4, 3: 6,…}.

Let’s solve the algorithm very simply. We first ask how many elements the dictionary must have. Then, with a for loop, we generate the values.


n = int(input('How many items do you want to insert?: '))
d = dict()
for i in range(1, n+1):
    d[i] = i * i

print(d)

Let’s try the code directly in the online compiler below:

dict Python – second example

Let’s take a second example with Python dictionaries.

Given a dictionary of contacts, composed of pairs of values ​​Name: Telephone first print all the values ​​with the values​​() method on the dictionaries and then with a loop for print the telephones.

Here is a possible solution:


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

contacts_values = contacts.values()
print(valori)

for phone in contacts_values:
    print(phone)

We could also print the keys, using the keys() method on the dictionary and with a loop to print the names. Here is a possible solution to the variation to the proposed algorithm.


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

contacts_names = contacts.keys()
print(contacts_names)

for name contacts_names:
    print(name)

dict Python – third example

Let’s take a final example to get some more practice with dictionaries.

Extract 4 cards from a deck of 40 and put them into an initially empty dictionary, created with dict() in Python. The key is the seed, while the value is the number.

Here is a possible solution to the proposed algorithm (we will realize that it is an incorrect procedure and I will also explain why):


import random

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

r = estract_cards()
print(r)

If you try the algorithm several times, in the online compiler above, you will find that the dictionary is not always populated with 4 elements. Why does this happen?

As we know, in dictionaries the keys must be unique, this means that every time the algorithm extracts a key that has already been entered, it goes on with the count but does not enter anything.

So the correct and fastest solution is done with the while loop:


import random

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

If you try the while solution in the online compiler, this time the dictionary fills up with exactly 4 elements each time. In this case, in fact, I set a condition: as long as the dictionary does not have 4 elements, it continues to extract elements.

In this way we have solved the problem of duplicate keys to populate dictionaries in Python.

Conclusion

In this lesson we have dealt with some Python exercises on dict, in the next lessons I will propose many others.

Some useful links

Python tutorial

Python Compiler

Install Python

Variables

Python dizionari

Python dizionari

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.

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.

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