Dizionari 1: introduzione¶

Riferimenti: SoftPython - dizionari 1

  • visualizza al meglio in
  • versione stampabile: clicca qua
  • per navigare nelle slide: premere Esc


Summer School Data Science 2023 - Modulo 1 informatica: Moodle

Docente: David Leoni david.leoni@unitn.it

Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it

Dizionari¶

I dizionari sono dei contenitori mutabili che ci consentono di associare velocemente voci dette chiavi a dei valori

(con qualche vincolo)

In [2]:
d = { 'sedia'   : 'un mobile per sedersi',
      'armadio' : 'un mobile a ripiani',                                                
}

Riferimenti:

  • SoftPython - dizionari: introduzione

Anatomia¶

In [3]:
d = { 'sedia'   : 'un mobile per sedersi',
      'armadio' : 'un mobile a ripiani',                                                
}
In [4]:
d
Out[4]:
{'sedia': 'un mobile per sedersi', 'armadio': 'un mobile a ripiani'}
In [ ]:
 

Possiamo creare un dizionario con

  • graffe esterne { }
  • separando le chiavi dai valori con i due punti :
  • separando le coppie chiave/valore con la virgola ,

Nota:

  • spazi / ritorni a capo non contano
  • l'ultima virgola è opzionale

In Python Tutor¶

In [5]:
 
Out[5]:
Python Tutor visualization

Chiavi 1/2¶

Le chiavi sono immutabili, non hanno ordine e
non vi possono essere duplicati

Vi ricorda qualcosa?

In [6]:
{
  5 : 'dispari',
  4 : 'pari',
  7 : 'dispari',  
}
In [7]:
 
Out[7]:
{5: 'dispari', 4: 'pari', 7: 'dispari'}

Chiavi 2/2¶

{
    [1,2] : 'zam',
    [3,4] : 'zum'
}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_9099/1327962343.py in <module>
      1 {
      2     [1,2] : 'zam',
----> 3     [3,4] : 'zum'
      4 }

TypeError: unhashable type: 'list'
In [8]:
{
    (1,2) : 'zam',
    (4,3) : 'zum'
}
In [9]:
 
Out[9]:
{(1, 2): 'zam', (4, 3): 'zum'}

Chiavi duplicate¶

Le chiavi sono immutabili, non hanno ordine e non vi possono essere duplicati

In [10]:
{
 'sedia'     : 'un mobile per sedersi',
 'sedia'     : 'appoggio con schienale',
 'lampadario': 'un apparecchio di illuminazione'
}
In [11]:
 
Out[11]:
{'sedia': 'appoggio con schienale',
 'lampadario': 'un apparecchio di illuminazione'}

Chiavi: l'occhio inganna¶

Le chiavi sono immutabili, non hanno ordine e
non vi possono essere duplicati

In [12]:
print({'navi' :'porto',
       'treni': 'stazione',
       'aerei': 'aereoporto',   
})
{'navi': 'porto', 'treni': 'stazione', 'aerei': 'aereoporto'}
In [13]:
from pprint import pprint
pprint({'navi' :'porto',
        'treni': 'stazione',
        'aerei': 'aereoporto',
})
{'aerei': 'aereoporto', 'navi': 'porto', 'treni': 'stazione'}

L'ordine in cui vedete le chiavi dipende dalla versione di Python, dal comando usato, dall'editor...

Valori¶

I valori possono essere mutabili
e ammettono duplicati

Esempi:

ingredienti = { 'farina' : 500,
                'uova' : 2,
                'zucchero' : 500,
}
satelliti = {    
    'Marte'    : ['Phobos','Deimos'],
    'Saturno'  : ['Titano','Hyperion', 'Mimas', 'Enceladus'],    
}

Dizionario vuoto¶

In [14]:
{}
Out[14]:
{}
In [15]:
type( {} )
Out[15]:
dict

DOMANDA: L'insieme vuoto invece come si scrive?

Fritti misti¶

In [16]:
{
    "a": 3,
    "b": ["una", "lista"],
     7 : ("questa","è","una","tupla")
}
Out[16]:
{'a': 3, 'b': ['una', 'lista'], 7: ('questa', 'è', 'una', 'tupla')}

Si possono fare, ma sconsiglio..

Creare da sequenza di coppie¶

In [17]:
dict(  [
         ('farina',500),
         ('uova',2),
         ('zucchero',200),
       ])
Out[17]:
{'farina': 500, 'uova': 2, 'zucchero': 200}

Creare da nome/valore¶

In [18]:
dict(farina=500,
     uova=2,
     zucchero=200)
Out[18]:
{'farina': 500, 'uova': 2, 'zucchero': 200}

Copiare in superficie 1/2¶

In [19]:
da = {'x':['a','b','c'],
      'y':['d','e']}
db = da.copy()

conf.jm.python_tutor()
Out[19]:
Python Tutor visualization

Copiare in superficie 2/2¶

In [20]:
 
Out[20]:
Python Tutor visualization
In [21]:
 
Out[21]:
Python Tutor visualization
In [22]: