English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base Python

Controllo dei flussi Python

Funzione di Python

Tipi di dati di Python

Operazioni di file Python

Oggetti e classi Python

Data e ora Python

Conoscenze avanzate Python

Manuale di riferimento Python

Comprensión de diccionario de Python

In questa guida, impareremo la comprensione dei dizionari in Python e come utilizzarla con l'aiuto di esempi.

Il dizionario è un tipo di dati in Python che ci permette di memorizzare i dati inIn un chiave/valore pair. Ad esempio:

my_dict = {1: 'apple', 2: 'ball'}

Per ottenere ulteriori informazioni su di loro, visitare:Dizionario Python

Cos'è la comprensione dei dizionari in Python?

La comprensione dei dizionari è un metodo elegante e semplice per creare dizionari.

Esempio 1: comprensione dei dizionari

Consideriamo il seguente codice:

square_dict = dict()
for num in range(1, 11):
    square_dict[num] = num*num
print(square_dict)

Ora, utilizziamo la funzione di comprensione dei dizionari per creare il dizionario nei programmi precedenti.

# Esempio di comprensione dei dizionari
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)

Le uscite dei due programmi saranno le stesse.

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

In questi due programmi, abbiamo creato square_dict conPari chiave/valore numericiil nostro dizionario.

Ma l'uso della comprensione dei dizionari ci permette diIn una rigaCreareDizionario.

Utilizzare la comprensione dei dizionari

Dal esempio sopra, possiamo vedere che la comprensione dei dizionari dovrebbe essere scritta in un pattern specifico.

La sintassi minima della comprensione dei dizionari è:

dictionary = {key: value for vars in iterable}

Confrontiamo questa sintassi con l'esempio di comprensione dei dizionari nel caso precedente.

Ora, vediamo come utilizzare i dati di un altro dizionario per utilizzare la comprensione dei dizionari.

Esempio 3: come utilizzare la comprensione dei dizionari

#item price in dollars
old_price = {'milk': 1.02, 'coffee': 2.5, 'bread': 2.5}
dollar_to_pound = 0.76
new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()}
print(new_price)

Risultato di output

{'milk': 0.7752, 'coffee': 1.9, 'bread': 1.9}

In questo caso, possiamo vedere che stiamo cercando i prezzi degli articoli in dollari e li convertiamo in sterline. L'uso della comprensione del dizionario rende questa attività più semplice e breve.

Condizioni nella comprensione del dizionario

Possiamo ulteriormente personalizzare la comprensione del dizionario aggiungendo condizioni. Vediamo un esempio.

Esempio 4: comprensione del dizionario con condizione if

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0}
print(even_dict)

Risultato di output

{'jack': 38, 'michael': 48}

Possiamo vedere che, a causa delle clausole nella comprensione del dizionario if, sono stati aggiunti solo gli articoli con valori pari.

Esempio 5: comprensione del dizionario con condizioni multiple if

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict = {k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40}
print(new_dict)

Risultato di output

{'john': 33}

In questo caso, sono stati aggiunti al nuovo dizionario solo gli articoli con valori dispari inferiori a 40.

Questo è perché ci sono più clausole nella comprensione del dizionario if. Sono equivalenti a un'operazione and che deve soddisfare entrambe le condizioni simultaneamente.

Esempio 6: comprensione del dizionario con condizione if-else

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict_1 = {k: ('old' if v > 40 else 'young')
    for (k, v) in original_dict.items()
print(new_dict_1)

Risultato di output

{'jack': 'young', 'michael': 'old', 'guido': 'old', 'john': 'young'}

In questo caso, verrà creato un nuovo dizionario tramite comprensione del dizionario secondario.

Il valore degli articoli con un valore maggiore o uguale a 40 è "old", mentre per gli altri articoli è "young".

Comprendimento annidato del dizionario

Possiamo considerare l'aggiunta di comprensione del dizionario all'interno della comprensione del dizionario per creare dizionari annidati. Vediamo un esempio.

Esempio 7: dizionario annidato con due comprensioni dizionarie

dictionary = {
    k1: {k2: k1 * k2 for k2 in range(1, 6)} for k1 in range(2, 5)
}
print(dictionary)

Risultato di output

{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}, 
3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15},
4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20}}

Come puoi vedere, abbiamo costruito una tabella di moltiplicazione annidata per i numeri da 2 a 4.

Ogni volta che si utilizza la comprensione dizionaria annidata, Python inizia sempre dal ciclo esterno e poi entra nel ciclo interno.

Quindi, il codice sopra è equivalente a:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = {k2: k1*k2 for k2 in range(1, 6)}
print(dictionary)

Può essere ulteriormente espanso:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = dict()
    for k2 in range(1, 6):
        dictionary[k1][k2] = k1*k2
print(dictionary)

Questi tre programmi ci danno la stessa uscita.

Vantaggi dell'uso della comprensione dizionaria

Come abbiamo visto, la comprensione dizionaria riduce notevolmente il processo di inizializzazione del dizionario. Fa sì che il codice sia più di stile pythonico.

L'uso della comprensione dizionaria nel nostro codice può ridurre il numero di righe di codice mantenendo la completezza della logica.

Considerazioni sull'uso della comprensione dizionaria

Nonostante la comprensione dizionaria sia molto utile per scrivere codice elegante e facile da leggere, non è sempre la scelta giusta.

Usale come:

  • A volte può rallentare l'esecuzione del codice e utilizzare più memoria.

  • Questo ridurrà anche la leggibilità del codice.

Non possiamo assolutamente cercare di rendere il codice su una riga unica aggiungendo logica difficile o una grande comprensione dizionaria. In questi casi, è meglio scegliere altri metodi di sostituzione, ad esempio i cicli.