collections.Counter()

Counter() è una sottoclasse di dict() contenuta nel modulo collections.
Fornisce un modo semplice per associare un contatore (un intero) a ogni chiave.
Inoltre le chiavi sono ordinate rispetto al contatore.

Costruttori

collections.Counter()Crea un contatore vuoto
collections.Counter("arcobaleno")Crea un contatore con le lettere di una stringa
collections.Counter(['red', 'green', 'red'])Crea un contatore con una lista di stringhe
collections.Counter(red=100, green=150, blue=255)Crea un contatore con assegnazione dei valori alle chiavi
collections.Counter(['red', 100), ('green', 150), ('blue', 255)])Crea un contatore con una lista di coppie
collections.Counter({'red': 100, 'green': 150, 'blue': 255})Crea un contatore con i dati un dizionario
...

Operatori

  1. x=c[‘red’], restituisce il contatore
  2. c[‘red’]=0, imposta il contatore
  3. del c[‘red’], elimina la chiave (e il contatore)

Funzioni / Metodi

L’oggetto Counter() può essere manipolato come un dict(), perché eredita i metodi di dict(), ma possiede nuovi metodi

c.clear()Elimina tutto il contenuto
c.copy()Crea una copia
c.elements()(Nuovo) Restituisce (come iteratore) gli elementi presenti ripetendoli (secondo il valore del contatore).
Se un contatore è minore di 1 l’elemento non verrà incluso.
c.get(k)Restituisce il valore corrispondente alla chiave k.
Se k non esiste restituisce None.
c.items()Restituisce la lista con le coppie [chiave, valore]
c.keys()Restituisce la lista delle chiavi
len(c)Restituisce il numero di elementi presenti
max(c)Restituisce la chiave più grande…
min(c)Restituisce la chiave più piccola…
c.most_common(n)(Nuovo) Restituisce una lista con le prime n coppie (con i contatori più alti).
Se n non è specificato, restituisce tutto.
c.pop(k)Restituisce il valore di k e elimina la coppia.
Se k non esiste provoca un errore.
c.pop(k, default)Restituisce il valore di k e elimina la coppia.
Se k non esiste restituisce il valore specificato.
c.popitem()Restituisce una coppia (chiave, valore) e la elimina.
c.setdefault(k)imposta il valore di k a None se non esiste, altrimenti rimane inalterato.
c.setdefault(k, default)Imposta il valore di k a default se non è presente.
c.subtract(z)(Nuovo) Aggiorna c sottraendo i valori presenti nella struttura z, si possono ottenere contatori negativi!
sum(c)Restituisce la somma delle chiavi (se è possibile)
c.total()Restituisce la somma dei contatori (Python 3.10)
c.update(z)(Nuovo) Aggiorna c aggiungendo i valori presenti nella struttura z.
Il metodo sovrascrive quello di dict() che invece sovrascrive i nuovi valori.
c.values()Restituisce la lista dei valori.
...

Prova

c=Counter()                                   # Counter()
c=Counter("arcobaleno")                       # Counter({'a': 2, 'o': 2, 'r': 1, 'c': 1, 'b': 1, 'l': 1, 'e': 1, 'n': 1})
c=Counter(['red', 'green', 'red'])            # Counter({'red': 2, 'green': 1}) 
c=Counter({'red': 1, 'green': 5, 'blue': 2})  # Counter({'green': 5, 'blue': 2, 'red': 1})

x=len(c)  # x=3
x=max(c)  # x='red'
x=min(c)  # x='blue'

le=list(c.elements())  # ['red', 'green', 'green', 'green', 'green', 'green', 'blue', 'blue']
lm=c.most_common()     # [('green', 5), ('blue', 2), ('red', 1)]
lm=c.most_common(2)    # [('green', 5), ('blue', 2)]

...