Tutoriel du dictionnaire Python : méthodes, exemples et modèles courants

  1. Accueil
  2. Blog
  3. Développement de logiciels

Développement de logiciels

Tutoriel du dictionnaire Python : Méthodes, exemples et modèles courants

Les dictionnaires sont partout en Python, des réponses JSON à la configuration. Apprenez à les créer, à les lire et à les mettre à jour, puis à choisir les modèles de comptage, de regroupement et de fusion que vous utiliserez sur des projets réels.

9 min de lecture
Tutoriel du dictionnaire Python : méthodes, exemples et modèles courants

À retenir

  • Un dictionnaire Python stocke les paires clé-valeur et recherche très rapidement une valeur par sa clé.
  • Utilisez get() lorsqu’une clé peut manquer, car les crochets augmentent KeyError.
  • Les clés doivent être hachables, comme des chaînes, des nombres ou des tuples. Les listes ne peuvent pas être des clés.
  • copy() est peu profond, donc les données imbriquées restent partagées sauf si vous utilisez deepcopy.

Si une liste est une rangée de cases numérotées, un dictionnaire Python est un ensemble de cases étiquetées. Vous demandez ce que vous voulez par nom plutôt que par position, c’est pourquoi les dictionnaires se trouvent derrière les données JSON, la configuration, les caches et une grande partie de Python lui-même.

Ce didacticiel commence par les bases et passe aux modèles que les développeurs expérimentés utilisent quotidiennement. Nous avons exécuté tous les exemples sur Python 3.13 et le résultat affiché provient de cette exécution.

Qu’est-ce qu’un dictionnaire ?

Un dictionnaire, ou dict, mappe clés à valeurs. Chaque clé n’apparaît qu’une seule fois et les valeurs peuvent être n’importe quoi, y compris des listes ou d’autres dictionnaires.

Tapez Accès par Commandé Doublons Idéal pour
liste Poste Oui Autorisé Séquences
tuple Poste Oui Autorisé Enregistrements corrigés
ensemble Adhésion uniquement Non Non autorisé Objets uniques
dicter Clé Ordre d’insertion Les clés sont uniques Recherches par nom

Depuis Python 3.7, les dictionnaires conservent officiellement l’ordre d’insertion. De nombreux tutoriels plus anciens les qualifient encore de non ordonnés, ce qui n’est plus vrai. Pour une comparaison plus large des autres types, voir Liste Python vs tuple vs set.

Les recherches sont rapides car les dictionnaires utilisent une table de hachage. La vérification d’une clé prend à peu près le même temps, que le dictionnaire contienne dix éléments ou un million, tandis que la recherche dans une liste devient plus lente à mesure qu’elle s’allonge.

Créer un dictionnaire

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

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

Les accolades sont la forme la plus courante. Un piège : {} crée un dictionnaire vide, pas un ensemble vide. Pour un ensemble vide, vous avez besoin de set().

Lire les valeurs en toute sécurité

Il existe deux manières de lire une valeur, et la différence est importante lorsqu’une clé n’existe pas :

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

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

Utilisez des crochets lorsque la clé doit exister, afin qu’une clé manquante échoue bruyamment. Utilisez get() lorsque l’absence est normale, comme un champ facultatif dans une réponse API. Pour rechercher une clé, utilisez l’opérateur in, qui examine les clés plutôt que les valeurs :

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

Ajouter, mettre à jour et supprimer

L’attribution à une clé la met à jour si elle existe, ou l’ajoute si elle n’existe pas :

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

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

Python propose plusieurs façons de supprimer des éléments :

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

Utilisez pop() lorsque vous souhaitez récupérer la valeur. Passer une valeur par défaut comme deuxième argument évite une erreur lorsque la clé n’est pas là. popitem() supprime et renvoie la paire la plus récemment ajoutée.

Boucler sur un dictionnaire

Le bouclage vous donne directement les clés. Pour obtenir à la fois les clés et les valeurs, utilisez items() :

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

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

# name = Asha
# age = 32

keys(), values() et items() renvoient des vues en direct plutôt que des copies, elles reflètent donc les modifications ultérieures. N’ajoutez ou ne supprimez pas de clés lors d’une boucle sur un dictionnaire, car Python génère un RuntimeError. Faites une boucle sur list(user) si vous avez besoin de le faire.

Astuce : La vérification in d’un dictionnaire est rapide, mais "Pune" in user.values() doit analyser chaque valeur. Si vous faites cela souvent avec des données volumineuses, votre dictionnaire risque d’être saisi dans le mauvais sens.

Aide-mémoire sur les méthodes de dictionnaire

Méthode Ce que ça fait
obtenir(k, par défaut) Renvoie une valeur, ou la valeur par défaut si la clé est manquante
keys() Renvoie une vue des clés
values() Renvoie une vue des valeurs
items() Renvoie une vue des paires clé et valeur
update(other) Ajoute ou écrase à partir d’un autre dictionnaire
pop(k, par défaut) Supprime une clé et renvoie sa valeur
popitem() Supprime et renvoie la dernière paire ajoutée
définir par défaut (k, v) Renvoie la valeur et insère d’abord v si la clé est manquante
copy() Renvoie une copie superficielle
clear() Supprime tout
dict.fromkeys(clés, v) Construit un dictionnaire à partir d’une liste de clés

Fusionner les dictionnaires

Un besoin courant consiste à appliquer les paramètres utilisateur en plus des valeurs par défaut. Lorsque les touches s’entrechoquent, le côté droit gagne :

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

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

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

L’opérateur | nécessite Python 3.9 ou version ultérieure, tandis que la version ** fonctionne également sur les anciennes versions. Les deux créent un nouveau dictionnaire. En revanche, defaults.update(saved) et defaults |= saved modifient defaults en place.

Compréhensions et tri

Les compréhensions de dictionnaire construisent un nouveau dictionnaire sur une seule ligne lisible, tout comme les compréhensions de liste le font pour les listes :

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

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

Pour trier par valeur, passez une fonction key à sorted(). Pour trouver la clé avec la plus grande valeur, utilisez max() :

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

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

Un dictionnaire n’a pas de méthode sort() et sorted() renvoie une liste de paires. Enveloppez le résultat dans dict() si vous voulez un dictionnaire dans cet ordre.

Modèles de comptage et de regroupement

Deux tâches reviennent constamment. La première consiste à compter, ce que vous pouvez faire en utilisant get() avec une valeur par défaut de zéro :

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}

La bibliothèque standard rend cela encore plus court avec Counter :

from collections import Counter

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

La seconde est le regroupement, et defaultdict est idéal ici car il crée la valeur manquante pour vous :

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

Sans cela, vous devrez vérifier si chaque clé existe avant de l’ajouter. Ces mêmes modèles fonctionnent bien pour agréger des données API ou des lignes de journal. Lorsqu’un dictionnaire est vide ou qu’une clé est manquante, notre guide sur la gestion des exceptions Python montre comment gérer le KeyError résultant.

Données imbriquées et piège à copie

JSON correspond directement aux dictionnaires et aux listes imbriqués, vous enchaînerez donc souvent les clés. Le chaînage get() assure cette sécurité lorsqu’un niveau peut manquer :

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

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

Soyez prudent lorsque vous copiez des données imbriquées. copy() duplique uniquement le niveau supérieur, donc les dictionnaires internes restent partagés avec l’original :

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

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

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

Changer la copie a modifié l’original, ce qui peut être un vilain bug. Utilisez copy.deepcopy(settings) pour obtenir une copie totalement indépendante.

Que peut être une clé de dictionnaire ?

Les clés doivent être hachables, ce qui signifie généralement immuables. Les chaînes, les nombres et les tuples de valeurs immuables fonctionnent tous. Les listes et les dictionnaires ne :

{["a"]: 1}

# TypeError: unhashable type: 'list'

La raison en est que le hachage d’une clé décide où sa valeur est stockée. Si une clé pouvait changer, Python ne pourrait plus la trouver. Si vous avez besoin d’une clé composée, utilisez un tuple, tel que {("Pune", 2026): 120}.

Erreurs courantes

  • Utilisation de crochets sur les clés facultatives. Recherchez get() lorsqu’une clé peut être absente.
  • En supposant que get() signifie que la clé existe. None pourrait signifier manquante ou stockée None. Utilisez in lorsque la différence compte.
  • Utilisation d’une valeur par défaut mutable. dict.fromkeys(names, []) donne à chaque clé la même liste. Utilisez plutôt une compréhension.
  • Changement de taille pendant l’itération. Boucle sur une copie des clés.
  • Utilisation d’un dict pour les champs fixes et connus. Un dataclass peut être plus clair et détecte les fautes de frappe dans les noms de champs.

Pour conclure

Les dictionnaires récompensent un peu de pratique. N’oubliez pas get() pour les touches facultatives, items() pour les boucles et Counter et defaultdict pour les deux tâches les plus courantes. Pour vous entraîner, prenez un petit fichier JSON et écrivez du code pour compter et regrouper ses enregistrements. Si vous êtes nouveau dans le langage, commencez par notre Tutoriel Python pour débutants.

Questions fréquentes

Qu’est-ce qu’un dictionnaire en Python ?

Un dictionnaire est une collection intégrée qui stocke les paires clé-valeur. Vous recherchez une valeur par sa clé, ce qui est rapide même avec une grande quantité de données.

Les dictionnaires Python sont-ils ordonnés ?

Oui. Depuis Python 3.7, les dictionnaires sont garantis de conserver l’ordre dans lequel les clés ont été insérées. La mise à jour d’une clé existante ne change pas sa position.

Quelle est la différence entre get() et les crochets ?

Les crochets lèvent KeyError lorsqu’une clé est manquante. get() renvoie None, ou une valeur par défaut que vous fournissez, elle convient donc aux clés facultatives.

Un dictionnaire peut-il avoir des clés en double ?

Non. Chaque clé est unique. L’attribution à une clé existante remplace sa valeur, et si un littéral répète une clé, la dernière valeur l’emporte.

Comment fusionner deux dictionnaires en Python ?

Utilisez un | b sur Python 3.9 ou version ultérieure, ou {**a, **b} sur les anciennes versions. Les deux créent un nouveau dictionnaire et les valeurs de b gagnent lorsque les clés entrent en conflit.

Continuez à apprendre

Travailler avec Stack Quora

Besoin d’aide pour les tests, WordPress ou le référencement ?

Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.

Continuez à lire

Plus de guides sur tests, IA et développement moderne

Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.

Intelligence artificielle

Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire

Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …

Lire l'article →
DevOps

Variables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués

Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…

Lire l'article →
Développement logiciel

Limitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429

Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…

Lire l'article →
Automatisation des tests

Se moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests

Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…

Lire l'article →
Tests logiciels

Couverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %

Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…

Lire l'article →
Bases de données et SQL

DELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser

DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …

Lire l'article →
Bases de données et SQL

Vues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples

Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …

Lire l'article →
Développement logiciel

Interface TypeScript vs Type : différences réelles, testées avec le compilateur

Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…

Lire l'article →
Développement logiciel

Python *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs

Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…

Lire l'article →
Développement logiciel

Fonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser

Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…

Lire l'article →
Intelligence artificielle

Que sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter

Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…

Lire l'article →
DevOps

Surveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces

Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…

Lire l'article →
DevOps

Volumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière

Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…

Lire l'article →
Automatisation des tests

TDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser

TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…

Lire l'article →
Tests logiciels

Tests d'acceptation utilisateur (UAT) : processus, liste de contrôle et exemples réels

Les tests d'acceptation des utilisateurs sont expliqués : qui les exécute, en quoi ils diffèrent du contrôle qualité, un processus en sept étapes, u…

Lire l'article →
Bases de données et SQL

Explication des valeurs SQL NULL : IS NULL, COALESCE, NULLIF et les pièges à éviter

Les valeurs SQL NULL expliquées avec les requêtes que nous avons exécutées : logique à trois valeurs, IS NULL, COALESCE, NULLIF, comment les agrégat…

Lire l'article →
Bases de données et SQL

Instruction SQL CASE WHEN : syntaxe, exemples réels et erreurs courantes

SQL CASE WHEN expliqué avec les requêtes que nous avons exécutées : formulaires simples et recherchés, ordre des conditions, pivots avec SUM, astuce…

Lire l'article →
Développement logiciel

Qu'est-ce que JWT ? Les jetons Web JSON expliqués avec un exemple fonctionnel

Qu’est-ce que JWT ? JSON Web Tokens expliqué : les trois parties, un jeton construit et falsifié dans le code que nous avons exécuté, JWT vs session…

Lire l'article →
Développement logiciel

Boucle d'événements JavaScript expliquée : pile d'appels, microtâches et minuteries avec des exemples

La boucle d'événements JavaScript expliquée avec le code que nous avons exécuté : pile d'appels, files d'attente de tâches et de microtâches, pourqu…

Lire l'article →
Développement logiciel

Générateurs Python et rendement expliqués : économisez de la mémoire avec des exemples réels

Les générateurs Python et le rendement expliqués avec le code que nous avons exécuté : comment ils s'arrêtent et reprennent, les économies de mémoir…

Lire l'article →
Intelligence artificielle

Que sont les intégrations ? Vecteurs et similarité cosinus expliqués simplement

Que sont les intégrations ? Un guide en langage simple sur les vecteurs, la similarité cosinus et la recherche sémantique, avec un petit exemple que…

Lire l'article →
DevOps

Déploiement Bleu-Vert vs Canary : différences, compromis et comment choisir

Explication du déploiement bleu-vert ou canari : comment chacun fonctionne, coût, risque et restauration, regroupement d'utilisateurs stable que nou…

Lire l'article →
Automatisation des tests

Tests instables : quelles sont leurs causes et comment les corriger définitivement

Des tests irréguliers expliqués avec des démos que nous avons exécutées : les principales causes, comment en confirmer et en diagnostiquer une, les …

Lire l'article →
Tests logiciels

Tests de charge vs tests de contrainte : différences, métriques et exemples k6

Explication des tests de charge et des tests de stress : ce que chacun prouve, les tests de pointe et de trempage, les métriques qui comptent, pourq…

Lire l'article →
Tests logiciels

Scénario de test et scénario de test : principales différences, exemples et quand les utiliser

Scénario de test et scénario de test expliqués : des définitions claires, un tableau côte à côte, une fonctionnalité de réinitialisation de mot de p…

Lire l'article →
Bases de données et SQL

Optimisation des requêtes SQL : lire les plans d'exécution et corriger les requêtes lentes, avec des délais

Optimisation des requêtes SQL testée sur un million de lignes : lire les plans d'exécution, ajouter les bons index, corriger les filtres non Sargabl…

Lire l'article →
Bases de données et SQL

SQL UNION vs UNION ALL : différences, exemples et performances testées

SQL UNION vs UNION ALL expliqué avec les requêtes que nous avons exécutées : des doublons, les règles suivent toutes les deux, un véritable bug de d…

Lire l'article →
Développement logiciel

Tutoriel API JavaScript Fetch : GET, POST, gestion des erreurs et délais d'attente

Un didacticiel de l'API JavaScript Fetch testé sur un serveur local : GET et POST, pourquoi 404 ne lance pas, un assistant réutilisable, des chaînes…

Lire l'article →
Développement logiciel

Gestion des fichiers Python : lecture, écriture, CSV, JSON et pathlib avec exemples

Gestion des fichiers Python expliquée avec le code que nous avons exécuté : modes ouverts, avec lecture de fichiers volumineux, CSV, JSON, pathlib, …

Lire l'article →
Développement logiciel

Classes et objets Python : didacticiel POO avec des exemples réels

Classes et objets Python expliqués avec le code que nous avons exécuté : __init__, méthodes, attributs de classe par rapport à l'instance, héritage,…

Lire l'article →
Intelligence artificielle

Qu'est-ce qu'un grand modèle de langage ? Comment fonctionnent les LLM, expliqués sans battage médiatique

Qu’est-ce qu’un grand modèle de langage ? Les LLM expliqués en langage simple : jetons, intégrations, attention, formation, fenêtres de température …

Lire l'article →
DevOps

Commandes Linux pour les débutants : le guide du terminal essentiel avec des exemples

Commandes Linux pour débutants, regroupées par tâche : navigation, fichiers, affichage des journaux, grep, tuyaux, autorisations, processus et archi…

Lire l'article →
Automatisation des tests

Selenium vs Playwright : principales différences, code comparé et lequel choisir

Comparatif Selenium vs Playwright : architecture, attente, support du navigateur et du langage, débogage, même test dans les deux outils, conseils d…

Lire l'article →
Tests logiciels

Partitionnement d'équivalence : technique de conception de tests expliquée avec des exemples concrets

Le partitionnement d'équivalence expliqué : comment trouver des partitions valides et invalides, des exemples concrets d'âges, de mots de passe et d…

Lire l'article →
Tests logiciels

Gravité vs priorité dans les tests logiciels : différences, matrice et exemples réels

Explication de la gravité et de la priorité dans les tests logiciels : des définitions claires, une matrice à quatre voies avec des exemples, des éc…

Lire l'article →
Bases de données et SQL

Tutoriel sur les sous-requêtes SQL : types, sous-requêtes corrélées et EXISTE avec des exemples

Un didacticiel sur les sous-requêtes SQL avec les requêtes que nous avons exécutées : les sous-requêtes scalaires, IN, FROM et SELECT, les sous-requ…

Lire l'article →
Bases de données et SQL

Transactions SQL et ACID expliquées : COMMIT, ROLLBACK et niveaux d'isolement

Transactions SQL et ACID expliquées avec un virement bancaire que nous avons effectué : COMMIT, ROLLBACK, points de sauvegarde, verrous, niveaux d'i…

Lire l'article →
Développement logiciel

Aide-mémoire sur les commandes Git : les commandes que vous utilisez réellement, avec des exemples

Une aide-mémoire sur les commandes Git regroupées par tâche : configuration, transfert, branches, télécommandes, cache, historique et annulation des…

Lire l'article →
Développement logiciel

Les promesses JavaScript expliquées : alors, catch, Promise.all et les erreurs courantes

Les promesses JavaScript expliquées avec le code que nous avons exécuté : les états, les chaînes then et catch, la gestion des erreurs, Promise.all,…

Lire l'article →
Développement logiciel

Tutoriel du dictionnaire Python : méthodes, exemples et modèles courants

Un didacticiel de dictionnaire Python avec du code que nous avons exécuté : créer, lire et mettre à jour des dictés, des méthodes clés, des fusions,…

Lire l'article →
Intelligence artificielle

Qu’est-ce que RAG ? La génération augmentée par récupération expliquée avec un exemple fonctionnel

Qu’est-ce que le RAG ? La génération augmentée par récupération expliquée étape par étape : indexation, segmentation, intégrations, récupération, un…

Lire l'article →
DevOps

Tutoriel Terraform pour les débutants : Infrastructure en tant que code du premier fichier aux modules

Un didacticiel Terraform pour les débutants : commencez sans compte cloud, apprenez l'initialisation, la planification et l'application, puis les va…

Lire l'article →
DevOps

Docker vs Kubernetes : principales différences, comment ils fonctionnent ensemble et ce dont vous avez besoin

Docker vs Kubernetes expliqué : ce que chacun fait, la même application s'exécute avec les deux, Docker Compose et Swarm comparés, les dockershim ch…

Lire l'article →
Automatisation des tests

Tutoriel Pytest pour les débutants : luminaires, paramétrage et exemples réels

Un tutoriel pytest pour les débutants avec des tests que nous avons exécutés sur pytest 9.2 : assertions, appareils, paramétrage, conftest, marqueur…

Lire l'article →
Tests logiciels

Cycle de vie des tests logiciels (STLC) : 6 phases, critères d'entrée et de sortie, exemple

Le cycle de vie des tests logiciels expliqué : six phases STLC avec des critères d'entrée et de sortie, des livrables, un exemple de fonctionnalité …

Lire l'article →
Développement logiciel

Git merge vs rebase : différences, exemples et quand utiliser chacun

Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.

Lire l'article →
Développement logiciel

List comprehension Python : syntaxe, exemples et cas à éviter

La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…

Lire l'article →
Bases de données et SQL

Jointures SQL expliquées avec exemples (Inner, Left, Right, Full)

Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…

Lire l'article →