Python Contatore nelle raccolte con esempio

Che cos'è la Python Contatore?

Python Il contatore è un contenitore che manterrà il conteggio di ciascuno degli elementi presenti nel contenitore. Il contatore è una sottoclasse disponibile all'interno della classe dizionario.

Il contatore è una sottoclasse disponibile all'interno della classe dizionario. Utilizzando il Python Strumento contatore, puoi contare le coppie chiave-valore in un oggetto, chiamato anche oggetto tabella hash.

Perché usare Python Contatore?

Ecco i principali motivi per l'utilizzo Python 3 Contatore:

  • Il contatore conserva i dati in una raccolta non ordinata, proprio come gli oggetti hashtable. Gli elementi qui rappresentano le chiavi e il conteggio come valori.
  • Ti consente di contare gli elementi in un elenco iterabile.
  • Operazioni aritmetiche come addizione, sottrazione, intersezione e unione possono essere facilmente eseguite su un contatore.
  • Un contatore può anche contare elementi di un altro contatore

Introduzione alla Python contatore

Python Counter accetta in input una lista, una tupla, un dizionario, una stringa, che sono tutti oggetti iterabili, e ti darà un output che avrà il conteggio di ciascun elemento.

Sintassi:

Counter(list)

Considera di avere la seguente lista:

list1 = ['x','y','z','x','x','x','y', 'z']

L'elenco ha elementi x, y e z. Quando usi Contatore in questo elenco, conterà quante volte x, y e z sono presenti. L'output se il contatore viene utilizzato su list1 dovrebbe essere qualcosa del tipo:

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

Quindi abbiamo il conteggio di x come 4, y come 2 e z come 2.

Per utilizzare Counter dobbiamo prima importarlo come mostrato nell'esempio seguente:

from collections import Counter

Ecco un semplice esempio che mostra il funzionamento del modulo Counter.

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

Produzione:

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

Contatore con stringa

In Python, tutto è un oggetto e anche la stringa è un oggetto. Python stringa può essere creato semplicemente racchiudendo i caratteri tra virgolette doppie. Python non supporta un tipo di carattere. Queste vengono trattate come stringhe di lunghezza uno, considerate anche come sottostringa.

Nell'esempio seguente, una stringa viene passata a Counter. Restituisce il formato dizionario, con coppia chiave/valore dove la chiave è l'elemento e il valore è il conteggio. Considera anche lo spazio come un elemento e fornisce il conteggio degli spazi nella stringa.

Esempio:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

Produzione:

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 elenco

Un elenco è un oggetto iterabile i cui elementi sono racchiusi tra parentesi quadre.

Gli elementi nell'elenco quando forniti al contatore verranno convertiti in oggetti hashtable in cui gli elementi diventeranno chiavi e i valori saranno il conteggio degli elementi dall'elenco fornito.

Ad esempio ['x','y','z','x','x','x','y','z']. Una volta assegnato il contatore all'elenco, ti verrà fornito il conteggio di ciascun elemento nell'elenco.

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

Produzione:

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

Contatore con dizionario

Un dizionario ha elementi come coppie chiave/valore e sono scritti tra parentesi graffe.

Una volta assegnato il dizionario al contatore, verrà convertito in oggetti hashtable in cui gli elementi diventeranno chiavi e i valori saranno il conteggio degli elementi del dizionario fornito.

Ad esempio: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. La funzione Contatore proverà a trovare il conteggio di ciascuna chiave nel dizionario fornito.

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

Produzione:

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

Contatore con tupla

Tuple è una raccolta di oggetti separati da virgole all'interno di parentesi tonde. Counter ti darà il conteggio di ciascuno degli elementi nella tupla data.

Una volta fornita la tupla al contatore, verrà convertita in un oggetto hashtable in cui gli elementi diventeranno chiavi e i valori saranno il conteggio degli elementi della tupla fornita.

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Produzione:

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

Accesso, inizializzazione e aggiornamento dei contatori

Inizializzazione del contatore

Un contatore può essere inizializzato passando un valore di stringa, un elenco, un dizionario o una tupla come mostrato di seguito:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

Puoi anche inizializzare un contatore vuoto come mostrato di seguito:

from collections import Counter
_count = Counter()

Aggiornamento contatore

È possibile aggiungere valori al contatore utilizzando il metodo update().

_count.update('Welcome to Guru99 Tutorials!')

Il codice finale è:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

L'output è:

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})

Accesso al contatore

Per ottenere i valori dal contatore, puoi procedere come segue:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Produzione:

u : 3

G : 1
u : 3
r : 2
u : 3

Eliminazione di un elemento dal contatore

Per eliminare un elemento da Counter puoi utilizzare del , come mostrato nell'esempio seguente:

Esempio:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

Produzione:

Counter({'y': 2, 'z': 2})

Operazione aritmetica su Python contatore

Le operazioni aritmetiche come addizione, sottrazione, intersezione e unione possono essere eseguite su un contatore come mostrato nell'esempio seguente:

Esempio:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

Produzione:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

Metodi disponibili su Python contatore

Ci sono alcuni metodi importanti disponibili con Counter, ecco l'elenco degli stessi:

  • elementi() : Questo metodo ti restituirà tutti gli elementi con conteggio >0. Gli elementi con conteggio 0 o -1 non verranno restituiti.
  • più_comune(valore): Questo metodo ti restituirà gli elementi più comuni dall'elenco dei contatori.
  • sottrarre(): Questo metodo viene utilizzato per detrarre gli elementi da un altro Contatore.
  • aggiornamento(): Questo metodo viene utilizzato per aggiornare gli elementi da un altro contatore.

Esempio: elementi()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

Produzione:

x
x
x
x
x
y
y

Esempio: most_common(valore)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

Produzione:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

Esempio: sottrai()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

Produzione:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

Esempio: aggiorna()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

Produzione:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

Riassegnazione dei conteggi in Python

È possibile riassegnare i conteggi del Contatore come mostrato di seguito:

Considera di avere un dizionario come: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

È possibile modificare il conteggio dell'elemento come mostrato di seguito:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

Produzione: Dopo l'esecuzione vedrai che il conteggio y è cambiato da 12 a 20

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

Ottieni e imposta il conteggio degli elementi utilizzando Contatore

Per ottenere il conteggio di un elemento utilizzando Counter puoi procedere come segue:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

Produzione:

12

Per impostare il conteggio dell'elemento puoi procedere come segue:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

Produzione:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

Sommario

  • Il contatore è un contenitore che manterrà il conteggio di ciascuno degli elementi presenti nel contenitore.
  • Counter è una sottoclasse disponibile all'interno della classe dizionario.
  • Usando il Python Strumento contatore, puoi contare le coppie chiave-valore in un oggetto, chiamato anche oggetto tabella hash.
  • Il contatore conserva i dati in una raccolta non ordinata, proprio come gli oggetti hashtable. Gli elementi qui rappresentano le chiavi e il conteggio come valori.
  • Ti consente di contare gli elementi in un elenco iterabile.
  • Operazioni aritmetiche come addizione, sottrazione, intersezione e unione possono essere facilmente eseguite su un contatore.
  • Un contatore può anche contare elementi di un altro contatore.
  • I metodi importanti disponibili su un contatore sono elements() , most_common(value), subtract() e update().
  • Un contatore può essere utilizzato su una stringa, una lista, un dizionario e una tupla.