In un precedente tutorial, ho parlato di un tipo di oggetto molto versatile e flessibile in Python, vale a dire elenchi. In questo articolo, continuo i miei refreshers con un altro tipo di oggetto Python flessibile chiamato dizionari (chiamato anche matrici associative o hash). Come la Lista, il Dizionario è un concetto importante da afferrare per andare avanti nel tuo viaggio in Python.
Se hai passato il elenchi articolo, sarà facile capire il concetto di Dizionari. Sono praticamente come le liste ma con due differenze principali:
Ogni chiave nel dizionario ha a valore, che potrebbe essere di qualsiasi tipo di oggetto Python. Cioè, i dizionari possono essere considerati come valore-chiave accoppiamenti. Ma attenzione chiavi non può essere di tipo Lista o Dizionario.
Come abbiamo visto nella sezione precedente, un dizionario è semplicemente un insieme non ordinato di coppie chiave-valore. Usiamo questo concetto per creare il nostro primo esempio, un dizionario inglese-francese. Questo dizionario può essere creato come segue:
english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture', 'table': 'table', 'door': 'porte'
Il dizionario inglese francese
contiene cinque parole inglesi impostate come chiavi con i loro significati francesi impostati come valori.
Diciamo che volevamo sapere come dire penna
in francese. Facciamo semplicemente quanto segue:
english_french [ 'penna']
dove otterrai stylo
come il valore restituito.
Diciamo che abbiamo avuto un french_spanish
Dizionario con le stesse parole che avevamo nel inglese francese
Dizionario, come segue:
french_spanish = 'papier': 'papel', 'stylo': 'pluma', 'voiture': 'coche', 'table': 'mesa', 'porte': 'puerta'
Bene, ti è stato chiesto come dire porta
in spagnolo, e non hai un dizionario inglese-spagnolo a portata di mano! Ma, non ti preoccupare, c'è una soluzione. Consulta il tuo inglese francese
Dizionario per la parola, quindi utilizzare il risultato per consultare il french_spanish
Dizionario. Hai capito? Vediamo come possiamo farlo in Python:
french_spanish [english_french [ 'porta']]
Il risultato dovrebbe essere puerta
. Non è molto carino? Hai appena preso la parola porta
in spagnolo anche se non hai un dizionario inglese-spagnolo.
Nell'esempio precedente abbiamo visto come possiamo creare un dizionario e accedere agli elementi nel dizionario. Vediamo alcune altre operazioni che possiamo fare su Dizionari. Userò il inglese francese
Dizionario negli esempi qui sotto.
In altre parole, questa operazione ha lo scopo di restituire il numero di coppie chiave-valore nel Dizionario. Questo può essere eseguito usando il len ()
operatore, come segue:
len (english_french)
Dovresti ricevere 5
tornato.
La cancellazione di un elemento in un dizionario avviene tramite il chiavi. Ad esempio, supponiamo di voler eliminare la parola (chiave) porta
dal dizionario Questo può essere fatto semplicemente come segue:
del inglese_french ['door']
Questo rimuoverà il chiave porta
insieme al suo valore porte
.
Nella precedente sezione, abbiamo rimosso il chiave porta
dal dizionario Se vogliamo verificare se porta
esiste ancora nel dizionario o no, scriviamo:
'door' in inglese_french
che dovrebbe tornare falso
.
Quindi, quale pensi che tornerà la seguente affermazione? Vai avanti e fare un tentativo (notare il non
).
'porta' non in inglese_french
Cosa succede se proviamo ad accedere a chiave che non esiste in un dizionario? Dire english_french [ 'porta']
. In questo caso, si otterrebbe un errore simile al seguente:
Traceback (ultima chiamata più recente):
File "dictionary.py", riga 7, in
stampa english_french ['door']
KeyError: 'door'
Potrebbe essere necessario un copia del tuo inglese francese
Dizionario e assegnarlo ad un altro dizionario. Questo può essere fatto semplicemente usando il copia()
funzione, come segue:
new_english_french = english_french.copy ()
Come accennato in precedenza, i valori nei dizionari possono essere di qualsiasi tipo, compresi i dizionari. Questo è indicato come annidamento. Un esempio di questo può essere il seguente:
student = 'ID': 'nome': 'Abder-Rahman', 'numero': '1234'
Quindi, se si digita studente [ 'ID']
, dovresti ricevere:
'nome': 'Abder-Rahman', 'numero': '1234'
Torniamo al inglese francese
Dizionario. Esistono molti modi in cui è possibile scorrere gli elementi del dizionario:
per word in english_french:
stampare la parola
Il risultato di questa affermazione è il seguente:
auto
penna
carta
porta
tavolo
Si noti che il chiavi nel risultato non sono dati nello stesso ordine come nel inglese francese
Dizionario. Ora puoi vedere perché ho detto che i dizionari sono considerati set non ordinati.
Un altro modo per scorrere chiavi è come segue:
per word in english_french.iterkeys ():
stampare la parola
Si noti che abbiamo usato il iterkeys ()
funzione. Una funzione simile che può essere utilizzata per scorrere i valori, ovvero itervalues ()
, è come segue:
per significato in english_french.itervalues ():
stampa significato
Il risultato in questo caso dovrebbe apparire come il seguente:
voiture
stylo
papier
porte
tavolo
Esistono modi alternativi per creare un dizionario in Python usando il dict
costruttore. Alcuni esempi di creazione dello stesso dizionario ID
utilizzando dict
sono come segue:
ID = dict (name = 'Abder-Rahman', numero = 1234)
ID = dict ([('name', 'Abder-Rahman'), ('number', 1234)]))
ID = dict (zip (['nome', 'numero'], ['Abder-Rahman', 1234])) # chiavi e valori come liste
C'è altro che puoi fare con i dizionari. Controlla la documentazione di Python per maggiori informazioni.