Python - Dizionario

Nel dizionario ogni chiave è separata dal suo valore da due punti (:), gli elementi sono separati da virgole e il tutto è racchiuso tra parentesi graffe. Un dizionario vuoto senza elementi viene scritto con solo due parentesi graffe, in questo modo: {}.

Le chiavi sono univoche all'interno di un dizionario mentre i valori potrebbero non esserlo. I valori di un dizionario possono essere di qualsiasi tipo, ma le chiavi devono essere di un tipo di dati immutabile come stringhe, numeri o tuple.

Accesso ai valori nel dizionario

Per accedere agli elementi del dizionario, puoi usare le familiari parentesi quadre insieme alla chiave per ottenere il suo valore. Di seguito è riportato un semplice esempio:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

Quando il codice sopra viene eseguito, produce il seguente risultato:

dict['Name']:  Zara
dict['Age']:  7

Se tentiamo di accedere a un elemento di dati con una chiave, che non fa parte del dizionario, otteniamo un errore come segue:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

Quando il codice sopra viene eseguito, produce il seguente risultato:

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

Aggiornamento del dizionario

Puoi aggiornare un dizionario aggiungendo una nuova voce o una coppia chiave-valore, modificando una voce esistente o eliminando una voce esistente come mostrato di seguito nel semplice esempio:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Quando il codice sopra viene eseguito, produce il seguente risultato:

dict['Age']:  8
dict['School']:  DPS School

Elimina elementi del dizionario

È possibile rimuovere singoli elementi del dizionario o cancellare l'intero contenuto di un dizionario. È inoltre possibile eliminare l'intero dizionario in un'unica operazione.

Per rimuovere esplicitamente un intero dizionario, è sufficiente utilizzare il deldichiarazione. Di seguito è riportato un semplice esempio:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Questo produce il seguente risultato. Notare che viene sollevata un'eccezione perché afterdel dict il dizionario non esiste più -

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Note - Il metodo del () è discusso nella sezione successiva.

Proprietà delle chiavi del dizionario

I valori del dizionario non hanno restrizioni. Possono essere qualsiasi oggetto Python arbitrario, sia oggetti standard che oggetti definiti dall'utente. Tuttavia, lo stesso non vale per le chiavi.

Ci sono due punti importanti da ricordare sulle chiavi del dizionario:

(a)Non sono consentite più voci per chiave. Ciò significa che non sono consentite chiavi duplicate. Quando si incontrano chiavi duplicate durante l'assegnazione, vince l'ultima assegnazione. Ad esempio:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

Quando il codice sopra viene eseguito, produce il seguente risultato:

dict['Name']:  Manni

(b)Le chiavi devono essere immutabili. Ciò significa che puoi usare stringhe, numeri o tuple come chiavi del dizionario, ma qualcosa come ['chiave'] non è consentito. Di seguito è riportato un semplice esempio:

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

Quando il codice sopra viene eseguito, produce il seguente risultato:

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable