Indice
Definizione di dizionario
Costruzione di un dizionario
Dimensione di un dizionario
Accesso ai valori di un dizionario
Aggiornamento di un dizionario
Scansione delle chiavi di un dizionario
Tre metodi utili degli oggetti dizionario
Un dizionario particolare: il contatore
Costruzione di un contatore
Il metodo
most_common()
dei contatoriDefinizione di insieme
Costruzione di un insieme tramite la funzione
set()
Dimensione di un insieme
Scansione di un insieme
Operatori di confronto tra insiemi
Operazioni su un insieme
dict
Tipicamente le chiavi di un dizionario sono stringhe (oggetti di tipo str
).
Un dizionario può essere visto come una collezione di coppie chiave-valore.
NOTA BENE: le tuple (in quanto oggetti immutabili) possono essere le chiavi di un dizionario, al contrario di liste e dizionari che sono mutabili e quindi possono esserne solo i valori.
{}
e separate da virgola; la chiave
è separata dal suo valore dal simbolo :
dict()
Dizionario vuoto:
In [98]:
{}
Out[98]:
Dizionario di quattro valori (oggetti di tipo int
) indicizzati tramite quattro chiavi (oggetti di tipo str
):
In [99]:
{'Silvia' : 45, 'Roberto': 47, 'Arianna' : 18, 'Tommaso' : 13}
Out[99]:
Dizionario di due valori (un oggetto di tipo list
e uno di tipo dict
annidato) indicizzati tramite due chiavi (oggetti di tipo str
):
In [100]:
{'pari' : [2, 4, 6, 8], 'dispari' : {'cinque' : 5, 'nove' : 9}}
Out[100]:
Dizionario vuoto:
In [101]:
dict()
Out[101]:
Alla funzione dict()
può essere passato come argomento una lista di tuple di dimensione due (chiave, valore).
Il seguente è il dizionario precedente di quattro valori (oggetti di tipo int
) indicizzati tramite quattro chiavi (oggetti di tipo str
) costruito con la funzione dict()
:
In [102]:
lista_delle_coppie_chiave_valore = [('Silvia', 45), ('Roberto', 47), ('Arianna', 18), ('Tommaso', 13)]
dict(lista_delle_coppie_chiave_valore)
Out[102]:
La funzione len()
restituisce la dimensione del dizionario passato come argomento, cioé il numero delle coppie (chiave, valore) contenute.
In [103]:
len({'uno' : 1, 'due' : 2, 'tre' : 3})
Out[103]:
L'istruzione:
my_dict[some_key]
restituisce il valore del dizionario my_dict
che ha chiave some_key
.
In [104]:
my_dict = {'Silvia' : 45, 'Roberto': 47, 'Arianna' : 18, 'Tommaso' : 13}
my_dict['Roberto']
Out[104]:
L'istruzione:
my_dict[some_key] = new_value
aggiorna il valore del dizionario my_dict
che corrisponde alla chiave some_key
con il nuovo valore new_value
, se some_key
esiste nel dizionario, altrimenti aggiunge la nuova coppia (chiave, valore) (some_key
, new_value
).
Esempio di aggiornamento di un valore esistente:
In [105]:
my_dict['Arianna'] = 19
my_dict
Out[105]:
Esempio di aggiunta di un valore nuovo:
In [106]:
my_dict['Andrea'] = 12
my_dict
Out[106]:
Il metodo update()
degli oggetti di tipo dict
permette di aggiornare il dizionario invocante con
una lista di tuple (chiave, valore):
In [107]:
my_dict.update([('Chiara', 17), ('Silvia', 46)])
my_dict
Out[107]:
oppure un dizionario:
In [108]:
my_dict.update({'Alessandro' : 3, 'Sofia' : 15})
my_dict
Out[108]:
Il metodo pop()
cancella dal dizionario invocante il valore associato alla chiave passata come argomento, e lo restituisce.
In [109]:
my_dict.pop('Arianna')
Out[109]:
In [110]:
my_dict
Out[110]:
L'istruzione:
del my_dict[some_key]
rimuovere dal dizionario my_dict
il valore con chiave some_key
.
In [111]:
del my_dict['Tommaso']
my_dict
Out[111]:
Il metodo clear()
svuota il dizionario.
In [112]:
my_dict.clear()
my_dict
Out[112]:
L'espressione:
my_key in my_dict
restituisce il valore True
(di tipo bool
) se la chiave my_key
è presente nel dizionario my_dict
.
In [113]:
'Tommaso' in my_dict
Out[113]:
Sintassi di scansione di un dizionario:
for key in my_dict:
do_something
dove:
my_dict
è il dizionario le cui chiavi sono da considerare una dopo l'altrakey
è la variabile che durante la scansione assume il valore della chiave di volta in volta consideratado_something
sono le istruzioni da eseguire per ogni chiave considerataRegole:
do_something
devono essere indentate 4 volte rispetto alla riga di intestazione
In [114]:
for key in my_dict:
print(key)
values()
restituisce la lista (oggetto di tipo list
) dei valori del dizionario invocante
In [115]:
my_dict = {'Silvia': 46, 'Roberto': 47, 'Andrea': 12, 'Chiara': 17}
In [116]:
my_dict.values()
Out[116]:
keys()
restituisce la lista (oggetto di tipo list
) delle chiavi del dizionario invocante.
In [117]:
my_dict.keys()
Out[117]:
items()
restituisce la lista (oggetto di tipo list
) delle tuple (chiave, valore) del dizionario invocante.
In [127]:
my_dict.items()
Out[127]:
Un contatore è un dizionario in cui valori sono oggetti di tipo int
che esprimono dei conteggi.
Un contatore è un oggetto di tipo Counter
.
Per usare costruire e usare un contatore occorre importare l'oggetto di tipo Counter
dal modulo collections
:
from collections import Counter
Un contatore viene costruito con il costruttore Counter()
a cui viene passata come argomento una sequenza. Si ottiene un dizionario con chiavi gli elementi non duplicati della sequenza e per valori il loro numero di volte con cui sono presenti nella sequenza.
In [153]:
from collections import Counter
c1 = Counter('abbcdaddb')
c1
Out[153]:
In [154]:
c2 = Counter([1, 1, 1, 2, 2, 5, 6, 7, 1])
c2
Out[154]:
NOTA BENE: non si può costruire un contatore su una sequenza di oggetti di tipo list
in quanto le le liste sono oggetti mutabili e non possono quindi essere chiavi in un dizionario.
In [155]:
c3 = Counter([[1, 2], [1, 2], [3, 4]])
c3
Il metodo most_common()
restituisce una lista di tuple di dimensione due contenenti le coppie (chiave, valore) ordinate per valore (conteggio) decrescente.
In [131]:
c1.most_common()
Out[131]:
Qualche esempio di costruzione di un insieme con la funzione set()
.
Insieme vuoto:
In [162]:
set()
Out[162]:
Insieme delle chiavi di un dizionario:
In [163]:
set(my_dict)
Out[163]:
Insieme dei caratteri di una stringa:
In [164]:
set('aaaabbbaacbaa')
Out[164]:
Insieme dei valori di una lista:
In [165]:
set([1, 1, 2, 2, 3, 3, 4, 4, 5, 5])
Out[165]:
La funzione len()
restituisce la dimensione dell'insieme passato come argomento, cioé il numero dei valori contenuti.
In [166]:
len(set('aaaabbbaacbaa'))
Out[166]:
L'espressione:
my_value in my_set
restituisce il valore True
(di tipo bool
) se il valore my_value
è presente nell'insieme my_set
.
In [167]:
'a' in set('abbacca')
Out[167]:
Sintassi di scansione di un insieme:
for value in my_set:
do_something
dove:
my_set
è l'insieme i cui valori sono da considerare una dopo l'altrovalue
è la variabile che durante la scansione assume il valore di volta in volta consideratodo_something
sono le istruzioni da eseguire per ogni valore consideratoRegole:
do_something
devono essere indentate 4 volte rispetto alla riga di intestazione
In [168]:
for value in set([1, 1, 2, 3, 3, 4]):
print(value)
Le espressioni
my_set1 == my_set2
my_set1 < my_set2
my_set1 > my_set2
restituiscono True
se (rispettivamente):
my_set1
coincide con my_set2
my_set1
è un sottoinsieme di my_set2
my_set1
è un superinsieme di my_set2
In [169]:
set('abbbabbaba') < set('abbbaaccccaaa')
Out[169]:
In [170]:
set('abbbabbaba') == set('abbbaaccccaaa')
Out[170]:
In [171]:
set('abbbabbaba') == set('aaaaaabbbabbababbbb')
Out[171]:
add()
aggiunge all'insieme invocante il valore passato come argomento
In [172]:
my_set = set('abbbaaccccaaa')
my_set
Out[172]:
In [173]:
my_set.add('d')
my_set
Out[173]:
In [174]:
my_set.add('a')
my_set
Out[174]:
discard()
rimuove dall'insieme invocante il valore passato come argomento (se questo è presente)
In [175]:
my_set.discard('a')
my_set
Out[175]:
NOTA BENE: esiste anche il metodo remove()
che rimuove il valore e se questo non è presente lancia un'eccezione di tipo KeyError
.
union()
restituisce l'unione tra l'insieme invocante l'insieme passato come argomento
In [176]:
my_set.union(set('dddeefffeffegg'))
Out[176]:
intersection()
restituisce l'intersezione tra l'insieme invocante l'insieme passato come argomento
In [177]:
my_set.intersection(set('dddeefffeffegg'))
Out[177]:
difference()
restituisce la differenza tra l'insieme invocante l'insieme passato come argomento (cioé tutti i valori dell'insieme invocante che non stanno nell'insieme passato come argomento)
In [178]:
my_set.difference(set('dddeefffeffegg'))
Out[178]:
clear()
svuota l'insieme invocante
In [179]:
my_set.clear()
my_set
Out[179]:
In [ ]: