Skip to content
Programmeren in Python, leer de nieuwste technieken
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen

Introductie

4
  • 1.1 Wat is Python?
  • 1.2 Python installatie
  • 1.2.1 Python installeren voor MacOS
  • 1.3 PyCharm Installatie

Basisprogrammering

6
  • 2.1 Python Basis: Variabelen, Datatypes en Operatoren
  • 2.2 Python if else (en elif)
  • 2.3 Python list (Array, Lijsten)
  • 2.4 Python Lussen: for loop, while loop, break, continue
  • 2.5 Python Functies: Definities, Parameters en Terugkeerwaarden
  • 2.6 Foutafhandeling: try, except, else, finally

Datatypes

13
  • 3.1 Introductie tot Geavanceerde Datatypes
  • 3.2 Python Tuple
  • 3.3 Python Set
  • 3.4 Python Dictionary
  • 3.5 Werken met Strings en String-methoden
  • 3.6 Collections Module: Krachtige Tools in Python
  • 3.7 Iterators en Generators
  • 3.8 List Comprehensions
  • 3.9 Geavanceerde Sortering
  • 3.10 Werken met Multi-dimensionale Data
  • 3.11 Typing en Datatypes
  • 3.12 Itertools voor Geavanceerde Iteraties
  • 3.13 Data Conversies

Modules

8
  • 4.1 Wat zijn Modules en Waarom zijn ze Belangrijk?
  • 4.2 Werken met Ingebouwde Modules
  • 4.3 Installeren en Gebruiken van Externe Pakketten
  • 4.4 Eigen Modules Maken
  • 4.5 Introductie tot Pakketten
  • 4.6 Importeren en Namespaces Begrijpen
  • 4.7 Geavanceerd: Relatief Importeren
  • 4.8 Organiseren van Grotere Projecten

Data Analyse

3
  • 5.1 Python Dataframe en Data Opschonen met Pandas
  • 5.2 Python Pandas Basisstatistieken en Data-analyse
  • 5.3 Python Numpy (NpArray): De Kracht van Numerieke Berekeningen

Webontwikkeling

5
  • 7.1 Inleiding tot Webontwikkeling
  • 7.2 HTTP-Verzoeken met requests: Communiceren met het Web
  • 7.3 Webscraping met BeautifulSoup: Data van het Web Halen als er geen APIs zijn
  • 7.4 Python Flask, een webserver & API tutorial
  • 7.5 WSGI & WebOb

Deploy

1
  • Deploy met Supervisor op Ubuntu

Object Georiënteerd Programmeren

8
  • Wat is Objectgeoriënteerd Programmeren (OOP) in Python?
  • Python class & object maken
  • self en __init__ uitgelegd (met voorbeelden)
  • Attributen afschermen: @property (getters/setters)
  • Overerving in Python + super() (en wanneer je het beter níet doet)
  • Dunder methods: __str__, __repr__, vergelijken (en waarom dit je OOP-code “Pythonic” maakt)
  • @dataclass: snelle nette classes (minder boilerplate, meer duidelijkheid)
  • OOP in de praktijk: design & structuur
View Categories
  • Home
  • Documentatie
  • Datatypes
  • 3.6 Collections Module: Krachtige Tools in Python

3.6 Collections Module: Krachtige Tools in Python

3 minuten leestijd

De collections module in Python is een schatkamer vol handige en geavanceerde datatypes. Hoewel lijsten, tuples en dictionaries al enorm krachtig zijn, biedt de collections module extra tools die je helpen om efficiënter en leesbaarder te programmeren. In dit hoofdstuk leer je vier belangrijke tools uit deze module kennen: Counter, defaultdict, namedtuple, en deque. 🎉

1. Counter: Voor Frequentietellingen #

De Counter klasse is een speciaal soort dictionary waarmee je eenvoudig kunt tellen hoe vaak elk item voorkomt in een collectie. Dit is perfect voor tekstanalyses, spelstatistieken, of waar je ook maar frequenties moet bijhouden.

Hoe werkt Counter? #

Counter neemt een iterable (zoals een lijst of string) en telt automatisch hoe vaak elk element voorkomt.

Voorbeeld:

from collections import Counter

woorden = ["appel", "banaan", "appel", "kers", "banaan", "appel"]
frequentie = Counter(woorden)
print(frequentie)
# Toont: Counter({'appel': 3, 'banaan': 2, 'kers': 1})
Python

Handige methoden van Counter #

  • most_common(n): Geeft de n meest voorkomende items.
print(frequentie.most_common(2))
# Toont: [('appel', 3), ('banaan', 2)]
Python

  • Tellen van letters in een string:
tekst = "banana"
letter_frequentie = Counter(tekst)
print(letter_frequentie)
# Toont: Counter({'a': 3, 'n': 2, 'b': 1})
Python

2. defaultdict: Voor Dictionaries met Standaardwaarden #

De defaultdict is een geavanceerde versie van een gewone dictionary. In plaats van een foutmelding te geven als een sleutel niet bestaat, geeft defaultdict automatisch een standaardwaarde terug.

Waarom defaultdict gebruiken? #

Met een gewone dictionary krijg je een fout als je een sleutel probeert te gebruiken die nog niet bestaat:

d = {}
# print(d["onbekend"])  # KeyError: 'onbekend'
Python

Met defaultdict kun je een standaardwaarde instellen, zoals 0 voor getallen of een lege lijst.

Voorbeeld:

from collections import defaultdict

# Maak een defaultdict met standaardwaarde 0
frequenties = defaultdict(int)
woorden = ["appel", "banaan", "appel"]

for woord in woorden:
    frequenties[woord] += 1

print(frequenties)
# Toont: defaultdict(<class 'int'>, {'appel': 2, 'banaan': 1})
Python

Andere toepassingen #

  • Lijsten groeperen:
groepen = defaultdict(list)
data = [("groep1", "Alice"), ("groep1", "Bob"), ("groep2", "Charlie")]

for groep, naam in data:
    groepen[groep].append(naam)

print(groepen)
# Toont: defaultdict(<class 'list'>, 
# {'groep1': ['Alice', 'Bob'], 'groep2': ['Charlie']})
Python

3. namedtuple: Voor Leesbare Tuples met Veldnamen #

Een namedtuple is een tuple met veldnamen, waardoor je de items in de tuple kunt benaderen alsof het attributen zijn. Dit maakt je code leesbaarder en onderhoudsvriendelijker.

Waarom namedtuple gebruiken? #

Gewone tuples zijn handig, maar soms lastig te begrijpen:

persoon = ("Alice", 30, "programmeur")
print(persoon[0])  
# Wat is [0]? De naam? De leeftijd?
Python

Met een namedtuple kun je de velden bij naam gebruiken:

from collections import namedtuple

Persoon = namedtuple("Persoon", ["naam", "leeftijd", "beroep"])
alice = Persoon(naam="Alice", leeftijd=30, beroep="programmeur")

print(alice.naam)  # Toont: Alice
print(alice.leeftijd)  # Toont: 30
Python

Praktisch gebruik #

  • Voor coördinaten of geometrie:
Punt = namedtuple("Punt", ["x", "y"])
p1 = Punt(10, 20)
print(p1.x, p1.y)  # Toont: 10 20
Python

  • Voor API-resultaten: Stel dat je data van een API krijgt, zoals gebruikersinformatie. Een namedtuple maakt het duidelijk en gestructureerd.

4. deque: Voor Efficiënte Dubbelzijdige Wachtrijen #

De deque (uitgesproken als “deck”) is een datastructuur die lijkt op een lijst, maar veel efficiënter is voor bewerkingen aan beide uiteinden (voorkant en achterkant).

Waarom deque gebruiken? #

Met een gewone lijst is het toevoegen of verwijderen van items aan het begin inefficiënt, omdat alle items moeten worden verschoven. deque lost dit probleem op en maakt die operaties supersnel.

Voorbeeld:

from collections import deque

wachtrij = deque(["Alice", "Bob", "Charlie"])
wachtrij.append("Diana")  # Voeg toe aan de achterkant
wachtrij.appendleft("Eve")  # Voeg toe aan de voorkant
print(wachtrij)  # deque(['Eve', 'Alice', 'Bob', 'Charlie', 'Diana'])
Python

Praktische methoden #

  • popleft() en pop(): Verwijder items van de voorkant of achterkant.
wachtrij.popleft()  
# Verwijder het eerste item
print(wachtrij)  
# deque(['Alice', 'Bob', 'Charlie', 'Diana'])
Python

  • rotate(): Draai de deque met een bepaald aantal stappen.
wachtrij.rotate(2)
print(wachtrij)  
# deque(['Charlie', 'Diana', 'Eve', 'Alice', 'Bob'])
Python

Veelvoorkomende fouten en tips #

  1. Verwar defaultdict niet met een gewone dictionary:
    Gebruik defaultdict alleen als je een standaardwaarde nodig hebt; anders werkt een gewone dictionary prima.
  2. Counter is niet geschikt voor alle tellers:
    Als je complexe bewerkingen nodig hebt, zoals tijdsafhankelijke frequenties, moet je misschien een aangepaste oplossing overwegen.
  3. Houd deque klein:
    Voor gigantische datasets kan een andere datastructuur, zoals een heap of gespecialiseerde bibliotheek, geschikter zijn.

Samenvatting #

De collections module biedt krachtige tools die verder gaan dan de standaard lijsten en dictionaries. Of je nu veelvoorkomende items wilt tellen met Counter, efficiënt wilt groeperen met defaultdict, duidelijke datamodellen wilt maken met namedtuple, of supersnelle wachtrijen nodig hebt met deque, deze tools maken je code cleaner, leesbaarder en sneller.

Probeer elk van deze tools uit en ontdek hoe ze je Python-programma’s naar een hoger niveau tillen. 🚀🎉

Updated on december 23, 2024

What are your Feelings

3.5 Werken met Strings en String-methoden3.7 Iterators en Generators
Inhoudsopgave
  • 1. Counter: Voor Frequentietellingen
    • Hoe werkt Counter?
    • Handige methoden van Counter
  • 2. defaultdict: Voor Dictionaries met Standaardwaarden
    • Waarom defaultdict gebruiken?
    • Andere toepassingen
  • 3. namedtuple: Voor Leesbare Tuples met Veldnamen
    • Waarom namedtuple gebruiken?
    • Praktisch gebruik
  • 4. deque: Voor Efficiënte Dubbelzijdige Wachtrijen
    • Waarom deque gebruiken?
    • Praktische methoden
  • Veelvoorkomende fouten en tips
  • Samenvatting
Programmeren in Python

Leer python op je eigen tempo met mooie interactieve hedendaagse voorbeelden.

© Copyright 2026 Programmeren in Python.
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in