Zelfstudie Python-woordenboek: methoden, voorbeelden en veelvoorkomende patronen

  1. Home
  2. Blog
  3. Softwareontwikkeling

Softwareontwikkeling

Zelfstudie Python-woordenboek: Methoden, voorbeelden en algemene patronen

Woordenboeken zijn overal in Python aanwezig, van JSON-reacties tot configuratie. Leer hoe u ze kunt maken, lezen en bijwerken, en pak vervolgens de tel-, groepeer- en samenvoegpatronen op die u bij echte projecten gaat gebruiken.

9 min leestijd
Python-woordenboektutorial: methoden, voorbeelden en veelvoorkomende patronen

Belangrijkste punten

  • Een Python-woordenboek slaat sleutel- en waardeparen op en zoekt zeer snel een waarde op aan de hand van de sleutel.
  • Gebruik get() als er mogelijk een sleutel ontbreekt, omdat vierkante haakjes KeyError omhoog staan.
  • Sleutels moeten hashbaar zijn, zoals strings, cijfers of tupels. Lijsten kunnen geen sleutels zijn.
  • copy() is oppervlakkig, dus geneste gegevens blijven gedeeld, tenzij je deepcopy gebruikt.

Als een lijst uit een rij genummerde vakken bestaat, is een Python-woordenboek een verzameling gelabelde vakken. Je vraagt ​​wat je wilt op naam in plaats van op positie. Daarom zitten woordenboeken achter JSON-gegevens, configuratie, caches en een groot deel van Python zelf.

Deze tutorial begint met de basis en gaat verder met de patronen die ervaren ontwikkelaars dagelijks gebruiken. We hebben alle voorbeelden uitgevoerd op Python 3.13 en de getoonde uitvoer is afkomstig van die run.

Wat is een woordenboek?

Een woordenboek, oftewel dict, wijst sleutels toe aan waarden. Elke sleutel verschijnt slechts één keer en waarden kunnen van alles zijn, inclusief lijsten of andere woordenboeken.

Typ Toegang door Besteld Duplicaten Beste voor
lijst Positie Ja Toegestaan Reeksen
tupel Positie Ja Toegestaan Vaste records
instellen Alleen lidmaatschap Nee Niet toegestaan Unieke artikelen
dictaat Sleutel Invoegopdracht Sleutels zijn uniek Zoeken op naam

Sinds Python 3.7 behouden woordenboeken officieel de invoegvolgorde. Veel oudere tutorials noemen ze nog steeds ongeordend, wat niet langer waar is. Voor een bredere vergelijking van de andere typen, zie Python-lijst versus tupel versus set.

Opzoekingen zijn snel omdat woordenboeken een hashtabel gebruiken. Het controleren van een sleutel kost ongeveer evenveel tijd, ongeacht of het woordenboek tien of een miljoen items bevat, terwijl het doorzoeken van een lijst langzamer wordt naarmate deze groeit.

Maak een woordenboek

user = {"name": "Asha", "age": 31, "city": "Pune"}

empty = {}
from_keywords = dict(name="Asha", age=31)
from_pairs = dict([("a", 1), ("b", 2)])

Accolades zijn de meest voorkomende vorm. Eén valkuil: {} creëert een leeg woordenboek, geen lege verzameling. Voor een lege set heb je set() nodig.

Lees waarden veilig af

Er zijn twee manieren om een waarde te lezen, en het verschil is van belang als een sleutel mogelijk niet bestaat:

user["name"]                  # 'Asha'
user["email"]                 # KeyError: 'email'

user.get("email")             # None
user.get("email", "not set")  # 'not set'

Gebruik vierkante haken als de sleutel moet bestaan, zodat een ontbrekende sleutel luid faalt. Gebruik get() als afwezigheid normaal is, zoals een optioneel veld in een API-antwoord. Om te controleren of er een sleutel is, gebruikt u de operator in, die naar sleutels kijkt in plaats van naar waarden:

"city" in user    # True
"Pune" in user    # False

Toevoegen, bijwerken en verwijderen

Als u een sleutel aan een sleutel toekent, wordt deze bijgewerkt als deze bestaat, of wordt deze toegevoegd als deze niet bestaat:

user["age"] = 32
user["email"] = "asha@example.com"
print(user)

# {'name': 'Asha', 'age': 32, 'city': 'Pune', 'email': 'asha@example.com'}

Python biedt verschillende manieren om items te verwijderen:

user.pop("city")          # returns 'Pune' and removes it
user.pop("phone", None)   # no error if it is missing
del user["email"]         # removes it, and raises KeyError if missing
user.clear()              # empties the dictionary

Gebruik pop() als u de waarde terug wilt. Door een standaardwaarde als tweede argument door te geven, wordt een fout vermeden als de sleutel er niet is. popitem() verwijdert het meest recent toegevoegde paar en retourneert het.

Loop over een woordenboek

Looping geeft je direct de sleutels. Gebruik items() om zowel sleutels als waarden op te halen:

user = {"name": "Asha", "age": 32}

for key, value in user.items():
    print(key, "=", value)

# name = Asha
# age = 32

keys(), values() en items() geven liveweergaven weer in plaats van kopieën, zodat ze latere wijzigingen weerspiegelen. Voeg geen sleutels toe of verwijder deze niet tijdens het doorlopen van een woordenboek, omdat Python een RuntimeError opwerpt. Loop over list(user) als dat nodig is.

Tip: De in controle van een woordenboek gaat snel, maar "Pune" in user.values() moet elke waarde scannen. Als u dit vaak doet met grote hoeveelheden gegevens, kan het zijn dat uw woordenboek verkeerd is ingetoetst.

Spiekbriefje voor woordenboekmethoden

Methode Wat het doet
get(k, standaard) Retourneert een waarde, of de standaardwaarde als de sleutel ontbreekt
keys() Geeft een weergave van de toetsen terug
values() Geeft een weergave van de waarden terug
items() Retourneert een weergave van sleutel- en waardeparen
update(other) Voegt een ander woordenboek toe of overschrijft het
pop(k, standaard) Verwijdert een sleutel en retourneert de waarde ervan
popitem() Verwijdert en retourneert het laatst toegevoegde paar
standaard instellen(k, v) Retourneert de waarde en voegt eerst v in als de sleutel ontbreekt
copy() Retourneert een ondiepe kopie
clear() Verwijdert alles
dict.fromkeys(toetsen, v) Bouwt een woordenboek op uit een lijst met sleutels

Woordenboeken samenvoegen

Een algemene behoefte is het toepassen van gebruikersinstellingen bovenop de standaardinstellingen. Als de toetsen botsen, wint de rechterkant:

defaults = {"theme": "light", "lang": "en"}
saved = {"theme": "dark"}

defaults | saved
{**defaults, **saved}

# Both give: {'theme': 'dark', 'lang': 'en'}

De operator | heeft Python 3.9 of hoger nodig, terwijl de versie ** ook op oudere versies werkt. Beiden maken een nieuw woordenboek aan. Daarentegen veranderen defaults.update(saved) en defaults |= saved defaults van plaats.

Begrijpen en sorteren

Woordenboekbegrippen bouwen een nieuw woordenboek op in één leesbare regel, net zoals lijstbegrippen dat doen voor lijsten:

prices = {"pen": 10, "book": 250, "bag": 900}

{k: v for k, v in prices.items() if v > 100}
# {'book': 250, 'bag': 900}

Om op waarde te sorteren, geeft u een functie key door aan sorted(). Gebruik max() om de sleutel met de grootste waarde te vinden:

sorted(prices.items(), key=lambda item: item[1], reverse=True)
# [('bag', 900), ('book', 250), ('pen', 10)]

max(prices, key=prices.get)
# 'bag'

Een woordenboek heeft geen sort()-methode en sorted() retourneert een lijst met paren. Plaats het resultaat in dict() als je een woordenboek in die volgorde wilt.

Patronen tellen en groeperen

Er komen voortdurend twee taken naar voren. De eerste is tellen, wat je kunt doen met get(), standaard ingesteld op nul:

words = "to be or not to be".split()

counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1

print(counts)
# {'to': 2, 'be': 2, 'or': 1, 'not': 1}

De standaardbibliotheek maakt dit nog korter met Counter:

from collections import Counter

Counter(words).most_common(2)
# [('to', 2), ('be', 2)]

De tweede is groeperen, en defaultdict is hier ideaal omdat het de ontbrekende waarde voor u creëert:

from collections import defaultdict

orders = [("Asha", 1200), ("Ben", 300), ("Asha", 800)]

by_customer = defaultdict(list)
for name, total in orders:
    by_customer[name].append(total)

print(dict(by_customer))
# {'Asha': [1200, 800], 'Ben': [300]}

Zonder dit zou u moeten controleren of elke sleutel bestaat voordat u deze toevoegt. Deze zelfde patronen werken goed voor het aggregeren van API-gegevens of logregels. Wanneer een woordenboek leeg is of een sleutel ontbreekt, laat onze gids voor Python-uitzonderingsafhandeling zien hoe u met de resulterende problemen omgaat KeyError.

Geneste gegevens en de kopieerval

JSON verwijst rechtstreeks naar geneste woordenboeken en lijsten, zodat u vaak sleutels aan elkaar moet koppelen. Chaining get() houdt dit veilig als er een niveau ontbreekt:

response = {"user": {"profile": {"city": "Pune"}}}

response["user"]["profile"]["city"]               # 'Pune'
response.get("user", {}).get("settings", {}).get("theme")   # None

Wees voorzichtig bij het kopiëren van geneste gegevens. copy() dupliceert alleen het hoogste niveau, zodat de interne woordenboeken gedeeld blijven met het origineel:

settings = {"db": {"host": "localhost"}}

shallow = settings.copy()
shallow["db"]["host"] = "prod"

print(settings["db"]["host"])
# prod

Als u de kopie wijzigt, wordt het origineel gewijzigd, wat een vervelende bug kan zijn. Gebruik copy.deepcopy(settings) om een ​​volledig onafhankelijke kopie te krijgen.

Wat kan een woordenboeksleutel zijn?

Sleutels moeten hashbaar zijn, wat over het algemeen onveranderlijk betekent. Tekenreeksen, getallen en tupels van onveranderlijke waarden werken allemaal. Lijsten en woordenboeken doen niet:

{["a"]: 1}

# TypeError: unhashable type: 'list'

De reden is dat de hash van een sleutel bepaalt waar de waarde ervan wordt opgeslagen. Als een sleutel zou kunnen veranderen, zou Python deze niet langer kunnen vinden. Als je een samengestelde sleutel nodig hebt, gebruik dan een tuple, zoals {("Pune", 2026): 120}.

Veel voorkomende fouten

  • Gebruik vierkante haakjes op optionele sleutels. Reik naar get() als een sleutel mogelijk ontbreekt.
  • Ervan uitgaande dat get() betekent dat de sleutel bestaat. None kan betekenen dat de sleutel ontbreekt, of dat er een opgeslagen None is. Gebruik in als het verschil ertoe doet.
  • Met behulp van een veranderlijke standaard. dict.fromkeys(names, []) krijgt elke sleutel precies dezelfde lijst. Gebruik in plaats daarvan een begrip.
  • Grootte wijzigen tijdens iteratie. Loop over een kopie van de sleutels.
  • Een dictaat gebruiken voor vaste, bekende velden. Een dataclass kan duidelijker zijn en vangt typefouten op in veldnamen.

Tot slot

Woordenboeken belonen een beetje oefening. Onthoud get() voor optionele toetsen, items() voor loops, en Counter en defaultdict voor de twee meest voorkomende taken. Om te oefenen, neemt u een klein JSON-bestand en schrijft u code om de records ervan te tellen en te groeperen. Als je nieuw bent in de taal, begin dan met onze Python-tutorial voor beginners.

Veelgestelde vragen

Wat is een woordenboek in Python?

Een woordenboek is een ingebouwde verzameling waarin sleutel- en waardeparen worden opgeslagen. U zoekt een waarde op aan de hand van de sleutel, wat snel is, zelfs bij een grote hoeveelheid gegevens.

Zijn Python-woordenboeken geordend?

Ja. Sinds Python 3.7 behouden woordenboeken gegarandeerd de volgorde waarin de sleutels zijn ingevoegd. Het bijwerken van een bestaande sleutel verandert de positie ervan niet.

Wat is het verschil tussen get() en vierkante haakjes?

Vierkante haakjes verhogen KeyError wanneer een sleutel ontbreekt. get() retourneert Geen, of een standaard die u opgeeft, dus het past bij sleutels die optioneel zijn.

Kan een woordenboek dubbele sleutels hebben?

Nee. Elke sleutel is uniek. Door toe te wijzen aan een bestaande sleutel wordt de waarde ervan vervangen, en als een letterlijke sleutel een sleutel herhaalt, wint de laatste waarde.

Hoe voeg ik twee woordenboeken samen in Python?

Gebruik een | b op Python 3.9 of hoger, of {**a, **b} op oudere versies. Beiden bouwen een nieuw woordenboek, en waarden uit b winnen als sleutels botsen.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git Commands Cheat Sheet: de commando's die je daadwerkelijk gebruikt, met voorbeelden

Een spiekbriefje voor Git-opdrachten, gegroepeerd op taak: setup, staging, branches, remotes, stash, geschiedenis en fouten ongedaan maken, met uitv…

Lees artikel →
Softwareontwikkeling

JavaScript-beloften uitgelegd: vervolgens catch, Promise.all en veelvoorkomende fouten

JavaScript-beloften uitgelegd met code die we hebben uitgevoerd: staten, dan en catch-ketens, foutafhandeling, Promise.all, allSettled, race en wat …

Lees artikel →
Softwareontwikkeling

Zelfstudie Python-woordenboek: methoden, voorbeelden en veelvoorkomende patronen

Een Python-woordenboektutorial met code die we hebben uitgevoerd: dictaten, sleutelmethoden, samenvoeg-, begrips-, tel- en groeperingspatronen en ve…

Lees artikel →
Kunstmatige intelligentie

Wat is RAG? Retrieval-Augmented Generation uitgelegd met een werkend voorbeeld

Wat is RAG? Retrieval-augmented generatie stap voor stap uitgelegd: indexeren, chunken, insluiten, ophalen, een klein werkend Python-voorbeeld, eval…

Lees artikel →
DevOps

Terraform-zelfstudie voor beginners: infrastructuur als code van het eerste bestand tot modules

Een Terraform-tutorial voor beginners: begin zonder cloudaccount, leer init, plan en pas toe, vervolgens variabelen, outputs, status, modules en een…

Lees artikel →
DevOps

Docker versus Kubernetes: belangrijkste verschillen, hoe ze samenwerken en welke u nodig heeft

Docker vs Kubernetes legde uit: wat elk doet, dezelfde app draait met beide, Docker Compose en Swarm vergeleken, de dockershim veranderen en hoe je …

Lees artikel →
Testautomatisering

Pytest-tutorial voor beginners: armaturen, parametriseren en echte voorbeelden

Een pytest-tutorial voor beginners met tests die we hebben uitgevoerd op pytest 9.2: beweringen, armaturen, parametrize, conftest, markers, tmp_path…

Lees artikel →
Softwaretesten

Levenscyclus van softwaretests (STLC): 6 fasen, in- en uitgangscriteria, voorbeeld

De levenscyclus van softwaretesten uitgelegd: zes STLC-fasen met in- en uitstapcriteria, deliverables, een voorbeeld van een uitgewerkte inlogfuncti…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →