Un rinfrescante aggiornamento sui dizionari di Python

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.

Che cos'è un dizionario comunque?

Se hai passato il elenchi articolo, sarà facile capire il concetto di Dizionari. Sono praticamente come le liste ma con due differenze principali: 

  1. Sono insiemi non ordinati (a differenza degli elenchi ordinati).
  2. Le chiavi sono usate per accedere agli oggetti e non per una posizione (vale a dire. indice).

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.

Creiamo un dizionario inglese-francese

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.

Rendere le cose più interessanti

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.

Più operazioni sui dizionari

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.

Quante voci ci sono nel dizionario?

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.

Cancellare una chiave

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.

La chiave esiste nel dizionario?

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'

Creare una copia del tuo dizionario

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 ()

Dizionari nidificati

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' 

Iterare su un dizionario

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

Modi alternativi di creazione di dizionari

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.