Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
Il linguaggio di programmazione Python offre un set unico di strumenti che rende la programmazione non solo divertente, ma accelera anche i tuoi progressi come programmatore. Grazie alla sua facilità d'uso, Python è diventato il linguaggio di riferimento per una varietà di settori, dallo sviluppo web e la scienza dei dati alla finanza e oltre.
La comprensione del dizionario Python è uno strumento importante che consente di generare dizionari in modo dinamico iterando su strutture di dati iterabili esistenti o dizionari per crearne di nuovi. Puoi pensare alla comprensione del dizionario come simile alla comprensione dell'elenco ma con un caso d'uso leggermente diverso.
Man mano che acquisisci familiarità con le comprensioni, scoprirai che possono migliorare significativamente il codice promuovendo la chiarezza ed eliminando la necessità di cicli lunghi e ripetitivi.
Se sei nuovo in Python , potresti non aver incontrato la comprensione o non averlo usato nel tuo codice. Prima di addentrarci nella sintassi, affrontiamo la domanda principale: cos'è la comprensione del dizionario Python?
Sommario
Cos'è la comprensione del dizionario Python?
Python Dictionary Comprension è un modo conciso per creare dizionari usando espressioni semplici. Ti consente di generare nuovi dizionari senza dover utilizzare for-loops.e
Diamo un'occhiata a un esempio di comprensione. Supponiamo di avere due elenchi, uno contenente chiavi e l'altro contenente valori:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
Utilizzando la comprensione del dizionario, puoi creare un nuovo dizionario ripetendo i due elenchi e combinando le corrispondenti coppie chiave-valore:
my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)
L'output sarà:
{'a': 1, 'b': 2, 'c': 3}
L'esempio sopra dovrebbe dare un'idea di cosa sono le comprensioni in Python . Per aiutarti ulteriormente a consolidare il concetto, comprendiamo la sintassi delle comprensioni del dizionario in Python.
Comprensione della sintassi della comprensione del dizionario
La sintassi per la comprensione del dizionario è semplice ma potente. Offrono un modo conciso per creare un nuovo dizionario in Python . Inoltre, seguono una sintassi simile per elencare la comprensione, ma usano le parentesi graffe {} e una coppia chiave-valore separata da due punti.
La struttura di base è la seguente:
{key: value for (key, value) in iterable}
In questa sintassi, la chiave e il valore rappresentano le espressioni utilizzate per generare le chiavi ei valori del dizionario risultante. L'iterabile fornisce l'origine dei dati utilizzati per creare le coppie chiave-valore.
Questa sintassi è stata introdotta in Python 3 e trasferita fino a Python 2.7, garantendo un'ampia compatibilità tra le versioni di Python.
Ad esempio, per creare un dizionario che mappa i numeri da 0 a 4 ai loro quadrati usando la comprensione del dizionario, puoi usare il seguente codice Python:
square_dict = {x: x**2 for x in range(5)}
Ciò risulterà nel seguente dizionario:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
E se volessi iterare su due variabili contemporaneamente? È possibile ottenere ciò utilizzando la comprensione del dizionario con la funzione zip() per creare un dizionario da due iterabili, uno che rappresenta le chiavi e l'altro che rappresenta i valori. Ecco un esempio:
keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3, 4, 5]
my_dict = {k: v for k, v in zip(keys, values)}
Il dizionario risultante sarà:
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
La comprensione del dizionario consente inoltre di aggiungere un'istruzione if facoltativa alla fine della comprensione per applicare un filtro condizionale sugli elementi inclusi.
Ad esempio, puoi creare un dizionario con solo numeri pari e i loro quadrati utilizzando la comprensione del dizionario:
even_square_dict = {x: x**2 for x in range(10) if x % 2 == 0}
Questo risulta in:
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
Ora che hai una certa familiarità con la sintassi della comprensione, diamo un'occhiata ad alcuni esempi di comprensione.
Esempi di comprensione del dizionario
La comprensione del dizionario trova una gamma di casi d'uso grazie alla sua sintassi potente ed elegante. Possono farti risparmiare tempo e rendere il tuo codice più leggibile.
Mappatura dei numeri nei loro quadrati
Considera un semplice esempio in cui desideri creare un dizionario che associ i numeri ai loro quadrati utilizzando le comprensioni del dizionario Python:
squares = {x: x**2 for x in range(1, 6)}
print(squares)
Questo produrrà:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Il codice sopra fa lo stesso lavoro dell'esecuzione di un ciclo sei volte e dell'elevazione al quadrato di ogni numero. Il codice seguente mostra l'esecuzione di un ciclo per prendere i quadrati dei numeri:
squares = {}
for x in range(1, 6):
squares[x] = x ** 2
print(squares)
A questo punto, ti starai chiedendo perché usare la comprensione quando puoi usare i cicli. Nella programmazione, una regola empirica è scrivere codice compatto ed efficiente.
Puoi anche applicare condizioni alla tua comprensione. Ad esempio, potresti voler creare un dizionario che contenga solo numeri pari e i loro quadrati:
even_squares = {x: x**2 for x in range(1, 6) if x % 2 == 0}
print(even_squares)
L'esecuzione di questo codice produrrà un nuovo dizionario come il seguente:
{2: 4, 4: 16}
Chiavi e valori inversi
Puoi anche invertire facilmente gli elementi del dizionario con la comprensione del dizionario in Python.
Il codice seguente mostra come invertire chiavi e valori di un dizionario esistente utilizzando la comprensione del dizionario:
original_dict = {"one": 1, "two": 2, "three": 3, "four": 4}
reversed_dict = {v: k for k, v in original_dict.items()}
print(reversed_dict)
La comprensione del dizionario di cui sopra (o comprensione del dict) stamperà quanto segue:
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
Per avere una buona comprensione di cosa sono i dizionari e come puoi usarli per diversi casi, fai riferimento al video qui sotto:
Gli esempi forniti servono come solida base per l'utilizzo della comprensione del dizionario nei tuoi progetti Python.
Inoltre, la comprensione del dizionario può essere ulteriormente ottimizzata, consentendo a una singola riga di codice di eseguire attività complesse che potrebbero consumare più tempo e memoria con i cicli.
3 principali vantaggi della comprensione del dizionario
Hai sperimentato l'eleganza della comprensione del dizionario attraverso gli esempi forniti. Oltre alla leggibilità, le comprensioni offrono numerosi vantaggi, inclusa l'efficienza, quando si lavora con l'efficiente struttura della tabella hash chiave/valore di Python, chiamata comprensione dict .
1. Creazione di codice chiaro e semplice
Le comprensioni ti consentono di creare nuovi dizionari senza sforzo e in modo leggibile. Fanno sembrare il tuo codice più Pythonic rispetto ai loop tradizionali.
2. Migliori prestazioni con stile
Le comprensioni non sono solo eleganti ma anche efficienti. Spesso funzionano più velocemente dei cicli for poiché utilizzano una singola espressione. Python ottimizza questo tipo di codice, eliminando la necessità di chiamare ripetutamente il costruttore del dizionario o di usare il metodo update().
3. Facile filtraggio e trasformazione dei dati
Un altro vantaggio della comprensione del dizionario è la sua semplicità nel filtrare e trasformare i dati. Ad esempio, puoi creare un nuovo dizionario da uno esistente applicando una condizione o modificando le chiavi oi valori.
È fondamentale capire quando utilizzare la comprensione del dizionario in Python, poiché possono diventare rapidamente complessi e più difficili da leggere e scrivere. Ora, esploriamo alcuni casi d'uso per la comprensione del dizionario in Python.
3 esempi di quando utilizzare la comprensione del dizionario
Le comprensioni sono utili nei seguenti 3 scenari:
1. Quando si crea un dizionario da due elenchi
{key:value for key, value in zip(list1, list2)}
2. Quando si filtra un dizionario in base al valore
{k: v for k, v in original_dict.items() if v > threshold}
3. Quando si trasformano chiavi o valori
{k.upper(): v * 2 for k, v in original_dict.items()}
È importante ricordare che mentre le comprensioni possono rendere il tuo codice più elegante ed efficiente, possono anche diventare difficili da leggere se sono eccessivamente complesse.
Diamo un'occhiata ad alcune delle insidie più comuni quando si utilizzano le comprensioni del dizionario.
Insidie della comprensione del dizionario
Le comprensioni del dizionario apportano eleganza ed efficienza, ma comportano anche delle sfide. Discuteremo le insidie comuni relative alla leggibilità, alla complessità e alle prestazioni con set di dati di grandi dimensioni.
Bilanciare complessità e leggibilità
Le comprensioni complesse del dizionario possono essere difficili da leggere. Dai la priorità alla leggibilità del codice, specialmente quando lavori con altri. In alcuni casi, i tradizionali cicli for potrebbero essere più semplici e manutenibili.
Prestazioni con set di dati di grandi dimensioni
Per set di dati di grandi dimensioni, la comprensione del dizionario potrebbe non essere sempre ottimale. Secondo Stack Overflow , un costruttore dict() integrato può superare le comprensioni del dizionario con numerose coppie chiave-valore a causa del ciclo in C.
Confronto con altri metodi
In questa sezione, confronteremo le comprensioni del dizionario con due metodi alternativi di creazione di dizionari in Python: cicli for e funzioni lambda.
Per Ciclo
L'utilizzo di un ciclo for per creare un dizionario comporta l'inizializzazione di un dizionario vuoto e quindi l'iterazione della coppia valore-chiave valida desiderata, aggiungendo ciascuna coppia al dizionario. Questo è un metodo più prolisso rispetto alla comprensione del dizionario.
Di seguito è riportato un esempio di creazione di un dizionario utilizzando i cicli for:
dictionary = {}
for key, value in zip(keys, values):
dictionary[key] = value
Al contrario, una comprensione del dizionario consente di ottenere lo stesso risultato in una sola riga:
dictionary = {key: value for key, value in zip(keys, values)}
Come puoi vedere, le comprensioni forniscono un modo conciso e più leggibile per creare dizionari in Python.
Funzioni Lambda
Possiamo anche utilizzare le funzioni Lambda per creare dizionari. Le funzioni lambda sono un modo per creare piccole funzioni anonime in Python. Possono essere usati insieme alla funzione map() per creare un dizionario.
Diamo un'occhiata a un esempio di funzioni Lambda per creare dizionari:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
key_value_pairs = map(lambda key, value: (key, value), keys, values)
dictionary = dict(key_value_pairs)
In confronto, ecco come è possibile creare lo stesso dizionario utilizzando la comprensione:
dictionary = {key: value for key, value in zip(keys, values)}
Ancora una volta, la comprensione del dizionario fornisce un'alternativa concisa e più leggibile alla creazione di dizionari utilizzando le funzioni lambda e la funzione map().
Migliori pratiche per la comprensione del dizionario
Quando si usano le comprensioni in Python, è essenziale seguire le best practice per migliorare la leggibilità, la manutenibilità e l'efficienza. Ecco alcune best practice da considerare:
1. Mantieni semplice la comprensione del dizionario
La comprensione del dizionario è potente, ma dovrebbe essere chiara e concisa. Se la tua comprensione diventa troppo complessa o si estende su più righe, prendi in considerazione l'utilizzo di un tradizionale ciclo for. Questo aiuta la comprensione del codice, specialmente per gli altri o quando si rivisita il tuo lavoro in un secondo momento.
2. Sfrutta le funzioni integrate
Python offre funzioni integrate come zip() ed enumerate() che aiutano a creare comprensioni. Usa queste funzioni per semplificare il tuo codice e renderlo più leggibile.
Ad esempio, l'utilizzo di zip() per combinare due liste e creare un dizionario produce un codice conciso e pulito come questo:
{key: value for key, value in zip(keys, values)}
3. Usa le affermazioni condizionali con saggezza
Incorpora affermazioni condizionali nelle tue comprensioni quando necessario, ma non abusarne. Possono aiutare a filtrare o modificare il dizionario risultante, ma troppe condizioni annidate possono rendere difficile la lettura del codice. Un semplice esempio che coinvolge un'istruzione condizionale è:
{x: x**2 for x in range(10) if x % 2 == 0}
4. Prestare attenzione alla comprensione del dizionario nidificato
La comprensione del dizionario annidato può generare dizionari con strutture annidate. Tuttavia, come le istruzioni condizionali, un eccesso di dizionario annidato può rendere il codice più difficile da decifrare. Evita di andare oltre due livelli di nidificazione nella comprensione del tuo dizionario nidificato.
A volte potrebbe essere necessario utilizzare la comprensione del dizionario annidato all'interno dei cicli per ottenere l'efficienza desiderata.
La nostra ultima parola
Ormai hai imparato la comprensione del dizionario in Python. Questa tecnica elegante ed efficiente aiuta a creare dizionari iterando su iterabili o utilizzando condizioni. Le comprensioni semplificano il codice, aumentando la leggibilità e la manutenibilità.
La creazione di nuovi dizionari è facile con la comprensione, risparmiando tempo e fatica rispetto ai tradizionali cicli for. Sono utili nelle applicazioni del mondo reale come l'elaborazione dei dati, la mappatura e la trasformazione.
Se desideri approfondire la tua conoscenza di Python e diventare un vero professionista, al nostro corso Python e scopri come stiamo creando i migliori utenti Python al mondo.
Cos'è il sé in Python: esempi del mondo reale
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.
Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere