Python Räknare i samlingar med exempel

⚡ Smart sammanfattning

Python Counter är en underklass till ordböcker från samlingsmodulen som räknar hur ofta varje element förekommer i en iterabel variabel. Den accepterar strängar, listor, tupler och ordböcker och stöder sedan aritmetiska, most_common- och update-operationer för snabba räkneuppgifter.

  • 🔢 Räkning: Räknaren räknar förekomsterna av varje element och returnerar dem som nyckel-antal-par.
  • 📥 Vilken itererbar som helst: Den accepterar strängar, listor, tupler och ordböcker som indata.
  • Aritmetisk: Räknare stöder addition, subtraction, korsning och fackliga operationer.
  • ???? vanligast(): Den här metoden returnerar elementen med högst frekvens i rankad ordning.
  • 🔄 Uppdatering: uppdatera() och subtract() justerar antal från en annan räknare eller iterabel.
  • 🤖 AI-hjälp: AI-assistenter genererar räknarkod och föreslår den för frekvens- och ordräkningsuppgifter.

Python Räknare i samlingar

Vad är Python Disk?

Python Räknare är en behållare som kommer att hålla räkningen av vart och ett av de element som finns i behållaren. Räknaren är en underklass tillgänglig i ordboksklassen.

Räknaren är en underklass tillgänglig i ordboksklassen. Med hjälp av Python Räknarverktyg, du kan räkna nyckel-värdeparen i ett objekt, även kallat ett hashtabellobjekt.

Varför användning Python Disk?

Här är viktiga skäl för att använda Python 3 Räknare:

  • Räknaren håller data i en oordnad samling, precis som hashbara objekt. Elementen här representerar nycklarna och räknas som värden.
  • Det låter dig räkna objekten i en itererbar lista.
  • Aritmetiska operationer som addition, subtraction, skärningspunkt och union kan enkelt utföras på en räknare.
  • En räknare kan också räkna element från en annan räknare

Introduktion till Python Motverka

Python Räknaren tar in en lista, tupel, ordbok, sträng, som alla är itererbara objekt, och den kommer att ge dig utdata som kommer att ha räkningen av varje element.

Syntax:

Counter(list)

Tänk på att du har följande lista:

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

Listan har elementen x , y och z. När du använder Counter på den här listan kommer den att räkna hur många gånger x , y och z är närvarande. Utdata om räknaren används på lista1 bör vara något i stil med:

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

Så vi har räkningen av x som 4, y som 2 och z som 2.

För att använda Counter måste vi först importera det som visas i nedanstående exempel:

from collections import Counter

Här är ett enkelt exempel som visar hur räknarmodulen fungerar.

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

Produktion:

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

Räkna med sträng

In Python, allt är ett objekt och sträng är också ett objekt. Python sträng kan skapas helt enkelt genom att omge tecken i det dubbla citattecken. Python stöder inte en teckentyp. Dessa behandlas som strängar med längd ett, även betraktade som en delsträng.

I exemplet nedan skickas en sträng till Counter. Den returnerar ordboksformat, med nyckel/värdepar där nyckeln är elementet och värdet är räkningen. Den betraktar också rymden som ett element och ger antalet mellanslag i strängen.

Exempel:

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

Produktion:

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

Räkna med lista

En lista är ett itererbart objekt som har sina element inom hakparenteser.

Elementen i listan när de ges till räknaren kommer att konverteras till ett hashbart objekt där elementen blir nycklar och värdena kommer att vara antalet av elementen från den angivna listan.

Till exempel ['x','y','z','x','x','x','y','z']. När du ger listan räknaren kommer den att ge dig antalet av varje element i listan.

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

Produktion:

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

Räknare med ordbok

En ordbok har element som nyckel/värdepar, och de är skrivna inom parenteser.

När ordboken har getts till räknaren kommer den att konverteras till ett hashbart objekt där elementen blir nycklar, och värdena kommer att vara antalet element från den angivna ordboken.

Till exempel: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Räknarfunktionen kommer att försöka hitta antalet för var och en av tangenterna i den givna ordboken.

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

Produktion:

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

Räknare med Tuple

Tuple är en samling objekt separerade med kommatecken inom runda parenteser. Räknaren ger dig antalet av vart och ett av elementen i den givna tupeln.

När tuppeln är given till räknaren, kommer den att omvandlas till ett hashbart objekt där elementen blir nycklar och värdena kommer att vara antalet element från den givna tuppeln.

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

Produktion:

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

Åtkomst till, initiering och uppdatering av räknare

Initierar räknare

En räknare kan initieras genom att skicka strängvärde, lista, ordbok eller tupel som visas nedan:

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

Du kan också initiera en tom räknare som visas nedan:

from collections import Counter
_count = Counter()

Uppdaterar räknaren

Du kan lägga till värden till Counter genom att använda metoden update().

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

Den sista koden är:

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

Utgången är:

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

Åtkomst till disk

För att få värdena från räknaren kan du göra så här:

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

Produktion:

u : 3

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

Ta bort ett element från räknaren

För att ta bort ett element från Counter kan du använda del , som visas i exemplet nedan:

Exempel:

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

Produktion:

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

Aritmetisk operation på Python Motverka

Aritmetiska operationer som addition, subtraction, skärningspunkt och union kan göras på en räknare som visas i exemplet nedan:

Exempel:

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)

Produktion:

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

Metoder tillgängliga på Python Motverka

Det finns några viktiga metoder tillgängliga med Counter, här är listan över desamma:

  • elements() : Denna metod kommer att returnera alla element med count >0. Element med 0 eller -1 räkning kommer inte att returneras.
  • most_common(värde): Denna metod kommer att returnera de vanligaste elementen från Counter list.
  • nedantract(): Denna metod används för att dra av elementen från en annan räknare.
  • uppdatering(): Denna metod används för att uppdatera elementen från en annan räknare.

Exempel: element()

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)

Produktion:

x
x
x
x
x
y
y

Exempel: most_common(värde)

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)

Produktion:

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

Exempel: subtract()

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)

Produktion:

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

Exempel: update()

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)

Produktion:

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

Omtilldelning räknas in Python

Du kan tilldela om antalet räknare enligt nedan:

Anse att du har en ordbok som: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Du kan ändra antalet element enligt nedan:

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

counter1['y'] = 20

print(counter1)

Produktion: Efter exekvering kommer du att se att antalet y ändras från 12 till 20

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

Få och ställ in antalet element med hjälp av Counter

För att få räkningen av ett element med hjälp av Counter kan du göra så här:

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'

Produktion:

12

För att ställa in antalet av elementet kan du göra så här:

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)

Produktion:

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

Vanliga frågor

Counter är en underklass av ordlistan som räknar hashbara objekt automatiskt och returnerar 0 för saknade nycklar istället för att generera KeyError. En vanlig ordbok behöver manuell räkningslogik och genererar KeyError för saknade nycklar.

most_common(n) returnerar de n elementen med högst antal som (element, count) tupler, ordnade från mest frekvent till minst frekvent. Om den anropas utan ett argument returnerar den alla element sorterade efter antal.

nedantract() behåller noll och negativa värden efter avdrag och ändrar räknaren på plats. Minusoperatorn returnerar en ny räknare och tar bort alla element vars resultat är noll eller negativt.

Ja. Dela texten först, till exempel Counter(sentence.split()), för att räkna hela ord. Att skicka en rå sträng räknar enskilda tecken, inklusive mellanslag, snarare än ord.

Använd sum(counter.values()) för att addera varje antal, eller Counter.total() i Python 3.10 och senare. Detta ger det totala antalet element som räknaren har räknat.

Räknaren åsidosätter __missing__ så alla frånvarande element rapporterar ett antal på 0. Detta låter dig öka antalet nya nycklar och fråga element på ett säkert sätt utan att först kontrollera om de finns.

AI-assistenter genererar Counter-kod för frekvensanalys, rekommenderar Counter framför manuella loopar och förklarar metoder som most_common och element. De omvandlar också räknelogik till renare, snabbare samlingsbaserad kod.

Ja. GitHub Copilot kompletterar automatiskt Counter-, defaultdict- och OrderedDict-mönster från en kommentar som beskriver ditt mål. Agentics AI-verktyg omstrukturerar manuella räkneloopar till Counter-anrop och lägger till tester i en fil.

Sammanfatta detta inlägg med: