In Python i dizionari sono simili alle liste ma hanno una coppia chiave : valore, che risulta essere molto utile in molteplici situazioni. Inizializziamo un dizionario che fungerà da esempio:
dizionario = {"chiave1" : "valore1", "chiave2" : "valore2", "numero": 10, "lista" : [1, "ciao", 2, 3]}
Come si può vedere nella chiave : valore possiamo mettere stringhe, interi, float e persino liste. Per richiamare i valori contenuti sarà sufficiente richiamare il dizionario e la chiave desiderata:
>>> dizionario["chiave1"]
'valore1'
>>> dizionario["lista"]
[1, 'ciao', 2, 3]
>>>
Possiamo anche cercare di capire, tramite una risposta booleana, se una chiave esiste indipendentemente dal suo valore:
>>> "chiave2" in dizionario
True
Si possono anche estrarre tutte le chiavi, apponendo il metodo keys() al dizionario stesso, e chiaramente tutti i valori con il metodo values().
>>> dizionario.keys()
dict_keys(['chiave1', 'chiave2', 'numero', 'lista'])
>>> dizionario.values()
dict_values(['valore1', 'valore2', 10, [1, 'ciao', 2, 3]])
Chiamando solo il dizionario avremo chiaramente chiavi e valori, ma sarebbero poco interessanti da riutilizzare. Molto meglio se le chiavi valori diventassero delle tuple! Ecco allora che il metodo items() ci viene in aiuto:
>>> dizionario.items()
dict_items([('chiave1', 'valore1'), ('chiave2', 'valore2'), ('numero', 10), ('lista', [1, 'ciao', 2, 3])])
Arriviamo quindi al punto dell’articolo, come si fa ad estendere un dizionario aggiungendo coppie di chiavi : valori che non esistono a priori? Dovremo chiamare il nostro dizionario (che potrebbe anche essere vuoto) assegnando un nuovo valore dentro una parentesi quadra assegnando (con il simbolo uguale) il valore:
>>> dizionario["nuovo"] = "nuovo_valore"
>>> dizionario.items()
dict_items([('chiave1', 'valore1'), ('chiave2', 'valore2'), ('numero', 10), ('lista', [1, 'ciao', 2, 3]), ('nuovo', 'nuovo_valore')])
Se possiamo aggiungere possiamo anche levare, con il comando pop e la chiave che ci interessa. Nella versione 3 di Python possiamo anche eliminare l’ultimo valore inserito con popitem:
>>> dizionario.pop("lista")
[1, 'ciao', 2, 3]
>>> dizionario.items()
dict_items([('chiave1', 'valore1'), ('chiave2', 'valore2'), ('numero', 10), ('nuovo', 'nuovo_valore')])
>>> dizionario.popitem()
('nuovo', 'nuovo_valore')
>>> dizionario.items()
dict_items([('chiave1', 'valore1'), ('chiave2', 'valore2'), ('numero', 10)])
Infine esistono comandi totalmente distruttivi, come del e clear. Con del si elimina fisicamente il dizionario che non esisterà più, mentre clear lo svuota di tutte le coppie. Non ultimo è possibile clonare un dizionario con il metodo copy
del dizionario
dizionario.clear()
dizionario_copiato = dizionario.copy()
I dizionari sono interessanti perché per l’appunto possono essere facilmente manipolati anche in modo dinamico.