Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python Counter in collections – Efficiënt tellen, updaten en rekenkundige operaties

Wat is Python Counter?

Python's Counter is een gespecialiseerde container die het aantal voorkomens van elk element in een iterable telt. Het erft van dict en slaat elementen op als keys met hun counts als values, wat het een ideaal hulpmiddel maakt voor hash-table-stijl tellen.

Waarom Python Counter gebruiken?

  • Het slaat data op in een ongesorteerde, hash-table-achtige structuur, met elementen als keys en hun counts als values.
  • Tellen van items in elke iterable – strings, lijsten, tuples of dictionaries – is eenvoudig.
  • Ingebouwde rekenkundige operaties (optelling, aftrekking, intersectie, unie) stellen krachtige set-achtige manipulaties toe.
  • Het kan counts van andere Counter instanties naadloos aggregaten.

Aan de slag met Counter

Importeer de class uit collections:

from collections import Counter

Nu kun je elke iterable aan Counter doorgeven en een count-mapping ontvangen.

Voorbeeld – Een lijst tellen

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

Output:

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

Voorbeeld – Een string tellen

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

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

Voorbeeld – Een dictionary tellen

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

Output:

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

Voorbeeld – Een tuple tellen

tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Output:

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

Initialiseren, updaten en counters benaderen

Initialiseren

print(Counter("Welcome to Guru99 Tutorials!"))  # string
print(Counter(['x','y','z','x','x','x','y','z']))  # list
print(Counter({'x': 4, 'y': 2, 'z': 2}))  # dict
print(Counter(('x','y','z','x','x','x','y','z')))  # tuple
# Lege counter
_count = Counter()

Updaten

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

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

Counts benaderen

print('%s : %d' % ('u', _count['u']))
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Output:

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

Een element verwijderen

del _count['x']
print(_count)

Output:

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

Rekenkundige operaties

Counter ondersteunt set-achtige rekenkunde. Positieve counts worden bewaard; negatieve waarden worden in het resultaat genegeerd.

counter1 = Counter({'x': 4, 'y': 2, 'z': -2})
counter2 = Counter({'x1': -12, 'y': 5, 'z': 4})
# Optelling
print(counter1 + counter2)
# Aftrekking
print(counter1 - counter2)
# Intersectie
print(counter1 & counter2)
# Unie
print(counter1 | counter2)

Output:

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

Belangrijkste methoden

  • elements() – Retourneert een iterator over elementen met positieve counts.
  • most_common([n]) – Retourneert de n meest voorkomende elementen als lijst van (elem, count) tuples.
  • subtract(other) – Trekt counts van een andere Counter af.
  • update(other) – Voegt counts van een andere Counter toe.

elements() gebruiken

counter = Counter({'x': 5, 'y': 2, 'z': -2, 'x1': 0})
for e in counter.elements():
    print(e)

Output:

x
x
x
x
x
y
y

most_common() gebruiken

counter = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(counter.most_common(2))
print(counter.most_common())

Output:

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

subtract() gebruiken

c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.subtract(c2)
print(c1)

Output:

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

update() gebruiken

c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.update(c2)
print(c1)

Output:

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

Counts hertoekennen

counter = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
counter['y'] = 20
print(counter)

Output:

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

Element counts ophalen en instellen

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

Output:

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

Samenvatting

  • Counter is een dictionary-subclass die elementen in elke iterable telt.
  • Het ondersteunt efficiënt tellen, rekenkundige operaties en een suite van utility-methoden.
  • Veelvoorkomende use-cases: frequentieanalyse, histogram-generatie, data-aggregatie.
  • Voor volledige documentatie, zie de officiële Python Counter docs.

Python

  1. Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
  2. Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
  3. Python `format()` strings beheersen met duidelijke voorbeelden
  4. Python len(): Praktische handleiding voor het meten van objectlengtes
  5. Python's String.find()-methode beheersen: Syntaxis, voorbeelden & alternatieven
  6. Python lambda-functies beheersen: praktische voorbeelden & best practices
  7. Python round()-functie uitgelegd met praktische voorbeelden
  8. Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
  9. Python timeit() – Uitvoeringstijd meten met praktische voorbeelden
  10. Python list.count(): Expert Gids met Praktische Voorbeelden
  11. Python List index() – Elementposities Vinden met Praktische Voorbeelden