Dictionary

Un dictionary (dizionario) è un insieme non ordinato di coppie key: value (chiavi e valori).

I dictionary ci forniscono un modo per mappare porzioni di dati l'uno con l'altro, in modo da poter trovare rapidamente i valori che sono associati l'uno con l'altro.

Un dizionario inizia e finisce con i parentesi graffe {}. Ogni voce è composta da una chiave e da un valore. Ogni coppia key: value è separata da una virgola.

E' considerata una buona pratica inserire uno spazio dopo ogni virgola.

dizionario = {}

dizionario = {1: "pane", 2: "burro"}

dizionario = {"nome": "Mario", 1: [2, 4, 3]}

dizionario = dict([(1,"pane"), (2,"burro")])

I valori nel dictionary

Python permette che i valori (value) in un dizionario siano di qualsiasi tipo: stringa, integer, una lista, un altro dizionario, boolean, ecc.

Tuttavia, le chiavi devono sempre essere un tipo di dato immutabile, come stringhe, numeri o tuple. NON liste.

dizionario = {1: "Ciao", "Alfa": True, "3": [1, 2, 3], "Quattro": {"a": "b"}, 5.0: 5.5}

Accesso e scrittura dei dati

I valori di un dictionary in Python sono accessibili posizionando la chiave tra parentesi quadre accanto al nome del dizionario.

I valori possono essere scritti posizionando la chiave tra parentesi quadre accanto al nome del dizionario e utilizzando l'operatore di assegnazione (=).

Se la chiave esiste già, il vecchio valore verrà sovrascritto.

Il tentativo di accedere ad un valore con una chiave che non esiste causerà un KeyError.

dizionario = {"canzone": "With or without you", "artista": "U"}

print (dizionario["canzone"])

dizionario["canzone"] = "Sunday bloody sunday"

Unire i dizionari con il metodo .update()

Si possono unire i dati di due dizionari con la funzione .update().

Scrivendo l'istruzione dict1.update(dict2), le coppie chiave-valore di dict2 saranno scritte nel dizionario dict1.

Per le chiavi uguali, il valore in dict1 sarà sovrascritto dal corrispondente valore in dict2.

diz_1 = {"classe": "quinta", "materia": "informatica"}
diz_2 = {"classe": "quarta", "materia": "fisica"}

diz_1.update(diz_2)

Metodi di accesso

Quando si cerca di guardare le informazioni in un dictionary di Python, ci sono diversi metodi che accedono al dizionario e restituiscono la lista dei suoi elementi.

Il metodo .keys() restituisce le chiavi (il primo oggetto della coppia chiave-valore), .values() restituisce i valori (il secondo oggetto della coppia chiave-valore) e .items() restituisce sia le chiavi che i valori come tuple.

dizionario = {"a": "1", "b": "2", "c": "3"}

print (dizionario.keys())

print (dizionario.values())

print (dizionario.items())
["a","b","c"]
["1", "2", "3"]
[("a","1"),("b","2"),("c","3")]

Metodo .get()

Python fornisce il metodo .get() per accedere ad un valore del dizionario, se esiste.

Questo metodo prende la chiave come primo argomento e un valore predefinito opzionale come secondo argomento e restituisce il valore per la chiave specificata se la chiave è nel dizionario.

Se il secondo argomento non è specificato e la chiave non viene trovata, allora None viene restituito.

print ({"nome": "Mario"}.get("nome"))
Mario

Metodo .pop()

Nei dictionary in Python si possono rimuovere le coppie chiave-valore con il metodo .pop().

Il metodo prende una chiave come argomento e la rimuove dal dizionario. Allo stesso tempo, restituisce anche il valore che rimuove dal dizionario.

dizionario = {"a": 1, "b": 2, "c": 3}
dizionario.pop("c")

print (dizionario)
{"a": 1, "b": 2}