Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Il conteggio di più oggetti ripetuti in una sola volta è stato un problema enorme nel panorama della programmazione. Fortunatamente, Python offre diverse tecniche e strumenti che possono essere sfruttati per risolvere questo problema. Il contatore che Python mette a disposizione dalle sue collezioni offre una soluzione pitonica, efficiente e pulita. 

Questa sottoclasse offre eccellenti funzioni di conteggio, che i programmatori cercano sempre. Capire cosa sia un contatore Python e usarlo in modo efficace è un’abilità che gli sviluppatori Python devono imparare. 

Come Python conta gli oggetti

Ci sono molte situazioni in cui si deve contare la quantità di oggetti presenti in una fonte di dati per sapere quanto regolarmente si presentano. In parole povere, si vuole conoscere la loro frequenza. Ad esempio, si può voler determinare la frequenza con cui un particolare elemento compare in una sequenza di valori o in un elenco. Il conteggio degli elementi può essere incredibilmente rapido e semplice, soprattutto quando gli elenchi sono brevi. D’altra parte, il conteggio può diventare piuttosto lungo e complicato quando l’elenco è lungo. 

In genere si utilizza un contatore per contare efficacemente gli oggetti. Per chi se lo stesse chiedendo, un contatore è una variabile intera che ha zero come valore iniziale. Dopo il conteggio, è necessario incrementare il contatore utilizzato per riflettere la quantità di volte in cui un determinato oggetto compare nell’origine dati (input). 

Quando si conta il numero di volte in cui un oggetto si presenta, l’ideale sarebbe utilizzare un unico contatore. Tuttavia, il conteggio di numerosi oggetti è completamente diverso, poiché è necessario formare un contatore per ogni singolo oggetto che si sta contando. L’uso di un dizionario Python è una scelta saggia se si vogliono contare più oggetti in una volta sola. 

Le chiavi del dizionario aiutano a salvare qualsiasi oggetto che si intende contare. Inoltre, i valori del dizionario possono tenere traccia delle ripetizioni di un oggetto, assicurando che il processo di conteggio diventi relativamente semplice. 

Ad esempio, se si vuole utilizzare un dizionario per contare gli oggetti in forma sequenziale, sarebbe meglio eseguire un ciclo sull’intera sequenza e verificare se l’oggetto in questione è presente nel dizionario per inizializzare la coppia chiave-valore. Una volta fatto, si può incrementare il conteggio in base alla situazione. 

Come funziona il contatore Python

Come già detto, il contatore è essenzialmente una sottoclasse del dizionario Python, progettato in particolare per contare gli oggetti hashable presenti nel programma Python. Questo dizionario conserva oggetti come conteggi e chiavi sotto forma di valori. Se si vuole utilizzare il contatore, è necessario offrire un iterabile o una sequenza di vari oggetti hashable, che fungerà da argomento critico per il costruttore della classe. 

Il contatore inizialmente itera con l’aiuto della sequenza di input, dopodiché conta la quantità di volte in cui un determinato oggetto viene visualizzato. Ora discutiamo le tecniche più comuni utilizzate dai programmatori per costruire i contatori:

Costruzione del banco

È possibile utilizzare diverse tecniche per sviluppare istanze di contatori, ma se l’obiettivo principale è quello di contare più oggetti contemporaneamente, sarebbe meglio utilizzare un’iterabile o una sequenza per iniziare il conteggio.

Aggiornamento dei conteggi degli oggetti

Dopo aver ottenuto un’istanza del contatore, si può usare il comando .update() per aggiornarlo con nuovi conteggi e oggetti. Invece di sostituire i valori, l’implementazione di .update() che counter fornisce si assicura che i conteggi esistenti siano insieme. Inoltre, sviluppa nuove coppie di conteggi chiave ogni volta che è necessario. 

I programmatori possono utilizzare il comando .update() sia con mappature che con iterabili come argomenti. Ricordate che se utilizzate un iterabile, questo metodo conterà gli elementi, dopodiché aggiornerà il contatore.

Contatore con stringa

Python considera ogni cosa un oggetto, comprese le stringhe. È possibile creare facilmente stringhe in Python raggruppando i caratteri con le doppie virgolette. È bene ricordare che, poiché Python non riconosce i tipi di carattere, tratta le stringhe come se fossero una sola, cosa che nel mondo della programmazione viene chiamata substringa. 

L’esempio riportato di seguito mostra una stringa che ha superato il contatore. Oltre a restituire il formato del dizionario utilizzando la coppia chiave-valore, prende in considerazione anche il ritmo. 

da collections import Counter

my_str = “Benvenuto nell’apprendimento della programmazione!”.

print(Counter(my_str))

Uscita:

Counter({‘o’: 3, ‘ ‘: 3, ‘u’: 3, ‘e’: 2, ‘l’: 2, ‘t’: 2, ‘r’: 2, ‘9’: 2, ‘W’: 1,

 ‘c’: 1, ‘m’: 1, ‘G’: 1, ‘T’: 1, ‘i’: 1, ‘a’: 1, ‘s’: 1, ‘!’: 1})

Contatore con dizionario

Il dizionario contiene elementi sotto forma di coppia di chiavi e valori. Questi elementi devono essere scritti tra parentesi graffe. Il dizionario si converte in oggetti hashtable dopo essere passato al contatore. Nel frattempo, gli elementi si trasformano in chiavi. Di seguito è riportato un esempio per rendere le cose più chiare:

da collections import Counter

dict1 = {‘x’: 4, ‘y’: 2, ‘z’: 2, ‘z’: 2}

print(Contatore(dict1))

Uscita:

Counter({‘x’: 4, ‘y’: 2, ‘z’: 2})

Contrastare con le tuple

La tupla, nella sua essenza, è un gruppo di oggetti suddivisi con l’aiuto di virgole presenti tra parentesi tonde. Il contatore offre il conteggio di ogni elemento all’interno della tupla. La tupla diventa un oggetto hashtable dopo essere passata al contatore, mentre gli elementi presenti in essa finiscono per diventare chiavi e i valori rappresentano il numero totale di elementi.

Python Counter – Quali sono i punti di forza?

In questo articolo abbiamo discusso cos’è Python Counter e il suo modo di aiutare le persone a contare numerosi oggetti presenti all’interno di un iterabile. Ecco i punti chiave di ciò che abbiamo imparato.

  • Il contatore utilizza oggetti dict, liste, stringhe e altri iterabili per contare gli oggetti, a condizione che siano hashable.
  • È necessario utilizzare il comando most_common se si vogliono trovare elementi comuni all’interno degli oggetti della raccolta
  • Quando si utilizza la classe Counter, i programmatori possono incorrere in errori nel caso in cui sia presente un elemento non cancellabile all’interno dell’oggetto contenitore (per esempio, un oggetto elenco). È possibile risolvere questo problema prendendo un elemento di una lista e convertendolo in tupla prima di passarlo alla classe Counter.