Modulo Collezioni Python: Tipi di contenitori avanzati
Impara a usare il modulo delle collezioni di Python. Master Counter, defaultdict, nametuple, deque e come semplificare strutture dati complesse.
Panoramica
Mentre i contenitori di base di Python (elenchi, dizionari, insiemi e tuple) sono sufficienti per la maggior parte delle attività, i programmi complessi spesso richiedono strutture dati specializzate. Per risolvere questo problema, Python fornisce il modulo integrato `collections`. Questo modulo contiene tipi di dati contenitore ad alte prestazioni progettati per risolvere attività di programmazione comuni in modo più efficiente e con una sintassi più pulita e autodocumentata.
Tra le classi più utili c'è `defaultdict`, che funziona come un normale dizionario ma inizializza automaticamente le chiavi mancanti con un valore predefinito (come un elenco vuoto o un numero intero zero), eliminando la necessità di controlli dettagliati delle chiavi. Un'altra centrale elettrica è la classe "Counter", ottimizzata specificatamente per il conteggio delle occorrenze di elementi in un iterabile. Per code e stack veloci, `deque` (coda a doppia estremità) offre inserimenti ed eliminazioni `O(1)` su entrambe le estremità, a differenza delle liste che soffrono di spostamenti `O(N)`.
Infine, il modulo offre `namedtuple`, che crea oggetti leggeri, simili a tuple, a cui è possibile accedere utilizzando la notazione punto e gli indici tradizionali (ad esempio, `point.x` invece di `point[0]`). Questo ti dà la velocità e l'immutabilità di una tupla con la leggibilità di una classe. Incorporare il modulo delle raccolte nel tuo flusso di lavoro garantisce che il tuo codice rimanga elegante, performante e pulito.
Codice e output di esecuzione
Conteggio delle parole utilizzando Counter e organizzazione di gruppi di dizionari con defaultdict.
from collections import Counter, defaultdict, namedtuple
# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")
# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")
# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20Implementazione passo dopo passo
- Analisi dei file di registro per contare le occorrenze di errori tramite Contatore
- Creazione di code prioritarie o pianificatori di attività utilizzando deque
- Rappresentazione di dimensioni di coordinate o record di dati utilizzando nametuple
Domande frequenti
Perché la deque è più veloce dell'elenco per le operazioni in coda?
Un elenco richiede lo spostamento di tutti gli elementi successivi in memoria durante l'inserimento o l'eliminazione dalla parte anteriore (O(N)). Una deque viene implementata come una lista doppiamente concatenata, consentendo operazioni O(1) ad entrambe le estremità.
Posso cambiare elementi di una nametuple?
No. Poiché le tuple con nome ereditano dalle tuple standard, sono completamente immutabili. È necessario utilizzare il metodo ._replace() per restituire una nuova istanza modificata.
Argomenti correlati
Scopri tutto sugli elenchi Python. Scopri come creare, suddividere, modificare ed eseguire l'iterazione degli array in Python in modo nativo.
Dizionari PythonDizionari principali di Python. Impara a archiviare, recuperare e gestire i dati delle coppie chiave-valore. Comprendere le prestazioni e le best practice per le mappature.
Python ItertoolsImpara il modulo itertools di Python. Padroneggia infiniti iteratori, combinazioni, permutazioni, raggruppamenti ed elaborazione dei dati con utilizzo efficiente della memoria.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Come ordinare un elenco in Python
Scopri come ordinare un elenco in Python utilizzando il metodo sort() e la funzione sorted(). Scopri l'ordinamento delle chiavi personalizzato e gli esempi di ordine inverso.
Foglio informativo sui metodi delle stringhe Python
Una guida di riferimento completa per la manipolazione delle stringhe Python. Padroneggia la formattazione, la ricerca, la divisione, la sostituzione e il controllo delle proprietà delle stringhe.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.