Select Page
I 100 libri da non perdere

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.