Il modulo delle raccolte in Python, noto anche come il modulo “collections”, è una libreria integrata che implementa tipi di dati di contenitori specializzati come alternative agli contenitori generali di Python.
Esempi di questi contenitori specializzati includono Counter, defaultdict, OrderedDict, deque, ChainMap, namedtuple etc.
Ecco come usare alcuni dei contenitori più comuni dal modulo delle raccolte:
1. Counter
Counter è una sottoclasse di dizionario utilizzata per il conteggio di oggetti hashable. Gli elementi sono memorizzati come chiavi del dizionario e le loro conteggio come valori del dizionario.
```
from collections import Counter
conteggio = Counter([‘a’, ‘b’, ‘c’, ‘a’, ‘b’, ‘b’])
print(conteggio)
```
OUTPUT: Counter({‘b’: 3, ‘a’: 2, ‘c’: 1})
1. defaultdict
Un defaultdict funziona esattamente come un dizionario python normale, ma è in grado di avere un default type per le chiavi che non sono state ancora definite.
```
from collections import defaultdict
dizionario = defaultdict(int)
dizionario[“chiave1”] = 1
dizionario[“chiave2”] = 2
print(dizionario[“chiave1”])
print(dizionario[“chiave_non_definita”])
```
OUTPUT:
1
0
1. deque
Deque, pronunciato “deck”, sta per “double-ended queue”. Deque supporta l’aggiunta e la rimozione di elementi da entrambe le estremità in un tempo O(1), mentre questo stesso compito è O(n) con le liste.
```
from collections import deque
d = deque()
d.append(‘a’)
d.append(‘b’)
d.append(‘c’)
print(d)
```
OUTPUT: deque([‘a’, ‘b’, ‘c’])
1. namedtuple
Un namedtuple assegna nomi, oltre all’indice numerico, a ciascun membro in un tuple. Questo può essere utile quando si ha un tuple di lunghezza maggiore e non si ricorda quale indice dovrebbe essere utilizzato per ottenere ciascun valore, oppure quando si vuole rendere il proprio codice più leggibile.
```
from collections import namedtuple
Persona = namedtuple(‘Persona’, ‘nome età genere’)
john = Persona(nome=‘John’, età=22, genere=‘M’)
print(john.nome, john.età, john.genere)
```
OUTPUT: John 22 M