In questo tutorial imparerai tutto sui dizionari Python; come vengono creati, accesso, aggiunta, rimozione di elementi da essi e vari metodi integrati.
Video: dizionari Python per memorizzare coppie chiave / valore
Il dizionario Python è una raccolta di elementi non ordinata. Ogni elemento di un dizionario ha una key/value
coppia.
I dizionari sono ottimizzati per recuperare i valori quando la chiave è nota.
Creazione del dizionario Python
Creare un dizionario è semplice come inserire elementi all'interno di parentesi graffe ()
separate da virgole.
Un elemento ha un key
e un corrispondente value
espresso come coppia ( chiave: valore ).
Sebbene i valori possano essere di qualsiasi tipo di dati e possano ripetersi, le chiavi devono essere di tipo immutabile (stringa, numero o tupla con elementi immutabili) e devono essere univoche.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Come puoi vedere dall'alto, possiamo anche creare un dizionario utilizzando la dict()
funzione incorporata.
Accesso agli elementi dal dizionario
Mentre l'indicizzazione viene utilizzata con altri tipi di dati per accedere ai valori, un dizionario utilizza keys
. Le chiavi possono essere utilizzate all'interno di parentesi quadre ()
o con il get()
metodo.
Se usiamo le parentesi quadre ()
, KeyError
viene alzato nel caso in cui una chiave non venga trovata nel dizionario. D'altra parte, il get()
metodo restituisce None
se la chiave non viene trovata.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Produzione
Jack 26 Nessuno Traceback (ultima chiamata più recente): File "", riga 15, in print (my_dict ('address')) KeyError: 'address'
Modifica e aggiunta di elementi del dizionario
I dizionari sono mutabili. Possiamo aggiungere nuovi elementi o modificare il valore degli elementi esistenti utilizzando un operatore di assegnazione.
Se la chiave è già presente, il valore esistente viene aggiornato. Nel caso in cui la chiave non sia presente, una nuova coppia ( chiave: valore ) viene aggiunta al dizionario.
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Produzione
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Rimozione di elementi dal dizionario
Possiamo rimuovere un particolare elemento in un dizionario utilizzando il pop()
metodo. Questo metodo rimuove un elemento con il fornito key
e restituisce il value
.
Il popitem()
metodo può essere utilizzato per rimuovere e restituire una (key, value)
coppia di elementi arbitraria dal dizionario. Tutti gli elementi possono essere rimossi contemporaneamente, utilizzando il clear()
metodo.
Possiamo anche utilizzare la del
parola chiave per rimuovere singoli elementi o l'intero dizionario stesso.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Produzione
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (chiamata più recente per ultima): File "", riga 30, in print (squares) NameError: il nome "squares" non è definito
Metodi del dizionario Python
I metodi disponibili con un dizionario sono elencati di seguito. Alcuni di essi sono già stati utilizzati negli esempi precedenti.
Metodo | Descrizione |
---|---|
chiaro() | Rimuove tutti gli elementi dal dizionario. |
copia() | Restituisce una copia superficiale del dizionario. |
fromkeys (seq (, v)) | Restituisce un nuovo dizionario con chiavi da seq e valore uguale a v (il valore predefinito è None ). |
get (key (, d)) | Restituisce il valore della chiave. Se la chiave non esiste, restituisce d (il valore predefinito è None ). |
elementi() | Restituisce un nuovo oggetto degli elementi del dizionario in formato (chiave, valore). |
chiavi () | Restituisce un nuovo oggetto delle chiavi del dizionario. |
pop (tasto (, d)) | Rimuove l'elemento con la chiave e restituisce il suo valore od se la chiave non viene trovata. Se d non viene fornito e la chiave non viene trovata, viene sollevata KeyError . |
popitem () | Rimuove e restituisce un elemento arbitrario ( chiave, valore ). Solleva KeyError se il dizionario è vuoto. |
setdefault (key (, d)) | Restituisce il valore corrispondente se la chiave è nel dizionario. In caso contrario, inserisce la chiave con un valore de restituisce d (il valore predefinito è None ). |
aggiornamento ((altro)) | Aggiorna il dizionario con le coppie chiave / valore di altre, sovrascrivendo le chiavi esistenti. |
valori() | Restituisce un nuovo oggetto dei valori del dizionario |
Di seguito sono riportati alcuni esempi di casi d'uso di questi metodi.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Produzione
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', " Scienza')
Comprensione del dizionario Python
La comprensione del dizionario è un modo elegante e conciso per creare un nuovo dizionario da un iterabile in Python.
La comprensione del dizionario consiste in una coppia di espressioni ( chiave: valore ) seguita da for
un'istruzione all'interno di parentesi graffe ()
.
Ecco un esempio per creare un dizionario in cui ogni elemento è una coppia di un numero e il suo quadrato.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Produzione
(0: 0, 1: 1, 2: 4, 3: 9, 4:16, 5:25)
Questo codice è equivalente a
squares = () for x in range(6): squares(x) = x*x print(squares)
Produzione
(0: 0, 1: 1, 2: 4, 3: 9, 4:16, 5:25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Built-in funzioni come all()
, any()
, len()
, cmp()
, sorted()
, ecc sono comunemente usati con i dizionari per eseguire compiti diversi.
Funzione | Descrizione |
---|---|
tutti() | Restituisce True se tutte le chiavi del dizionario sono True (o se il dizionario è vuoto). |
qualunque() | Restituisce True se una qualsiasi chiave del dizionario è vera. Se il dizionario è vuoto, restituisci False . |
len () | Restituisce la lunghezza (il numero di elementi) nel dizionario. |
cmp () | Confronta gli elementi di due dizionari. (Non disponibile in Python 3) |
smistato() | Restituisce un nuovo elenco ordinato di chiavi nel dizionario. |
Di seguito sono riportati alcuni esempi che utilizzano funzioni incorporate per lavorare con un dizionario.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Produzione
Falso Vero 6 (0, 1, 3, 5, 7, 9)