Créer un dictionnaire
nom = {"clé": valeur, ...}
Les clés sont uniques et servent d'étiquettes. La valeur peut être de n'importe quel type : texte, nombre, booléen, liste, etc.
Le dictionnaire (clé/valeur) et le tableau 2D (grille)
Un dictionnaire associe des clés à des valeurs. On le crée avec des accolades {}. Chaque paire s'écrit clé: valeur. On accède à une valeur en donnant sa clé entre crochets.
nom = {"clé": valeur, ...}
Les clés sont uniques et servent d'étiquettes. La valeur peut être de n'importe quel type : texte, nombre, booléen, liste, etc.
nom = {}
On crée un dictionnaire vide avec {} puis on y ajoute des paires clé/valeur une à une, comme on ajoute des entrées dans un carnet.
On modifie une valeur existante ou on en ajoute une nouvelle de la même façon : dico[clé] = nouvelle_valeur. Pour supprimer, on utilise le mot-clé del.
dico["clé"] = nouvelle_valeur
Si la clé existe déjà, la valeur est remplacée. Si la clé est nouvelle, la paire est créée. Python ne fait pas de différence entre les deux cas.
del dico["clé"]
del supprime la paire clé/valeur définitivement. Si la clé n'existe pas, Python lève une erreur KeyError - vérifier avant avec in ou utiliser .pop("age", None).
On peut boucler sur les clés seules, les valeurs seules, ou les deux à la fois avec .items(). On peut tester si une clé est présente avec in et compter avec len.
.items() - .keys() - .values()
.items() est le plus utile : il donne les deux en même temps. On utilise deux variables dans le for pour recevoir la clé et la valeur.
in - len()
in cherche parmi les clés uniquement, pas les valeurs. len donne le nombre de paires clé/valeur dans le dictionnaire.
Quand on n'est pas sûr qu'une clé existe, dico["clé"] peut planter avec un KeyError. La méthode .get() évite ce problème en renvoyant une valeur par défaut si la clé est absente.
dico.get("clé", valeur_par_defaut)
Le deuxième argument est la valeur par défaut. Si on ne le précise pas, .get() renvoie None quand la clé est absente - ce qui est déjà mieux qu'une erreur.
avec vérification in vs .get()
Les deux approches sont correctes. .get() est plus concise quand on veut seulement lire la valeur ou utiliser un défaut.
Un tableau 2D est une liste dont chaque élément est lui-même une liste. On l'imagine comme une grille avec des lignes et des colonnes. On accède à une cellule avec deux indices : [ligne][colonne].
grille[ligne][colonne]
Le premier indice choisit la ligne, le second choisit la colonne dans cette ligne. Les deux indices commencent à 0.
grille[ligne][colonne] = valeur
On peut modifier une cellule précise ou remplacer une ligne entière. La structure reste la même : une liste de listes.
On utilise une double boucle : la première parcourt les lignes, la seconde parcourt les valeurs de chaque ligne. len(foret) donne le nombre de lignes, len(foret[0]) donne le nombre de colonnes.
for ligne in grille / for valeur in ligne
Le print() sans argument à la fin de la boucle externe crée un saut de ligne entre chaque rangée de la grille.
range(len(grille)) / range(len(grille[0]))
Utile quand on a besoin des indices en même temps que les valeurs, par exemple pour modifier des cellules selon leur position.
Trois structures, trois usages. Le bon choix dépend de comment on repère les données : par position, par étiquette ou par ligne et colonne.
| Structure | On repère par | Exemple concret | Quand choisir ? |
|---|---|---|---|
| liste = [...] | position (indice 0, 1, 2...) | mesures = [21.5, 22.0, 19.8] | Une suite de mesures, un ensemble de valeurs du même type |
| dico = {...} | clé (étiquette) | arbre = {"espece": "erable", "age": 40} | Les attributs d'un objet ou d'un individu (l'arbre, l'étudiant, la station) |
| grille = [[...]] | ligne et colonne | carte = [[0, 1, 0], [1, 1, 0]] | Une carte de la forêt, une image pixel par pixel, un tableau de données 2D |
Quatre erreurs très fréquentes avec les dictionnaires et les tableaux 2D.
Si la clé n'existe pas dans le dictionnaire, Python plante. Utilise in pour vérifier, ou .get() avec une valeur par défaut.
Le premier indice est toujours la ligne, le second la colonne. Les inverser donne une cellule complètement différente, parfois hors limites.
{} et liste []Les accolades seules {} sans : créent un ensemble (set), pas un dictionnaire. Un dictionnaire exige toujours des paires clé: valeur.
Avec [[0]*3]*2 les deux lignes pointent sur la même liste en mémoire. Modifier une cellule modifie toutes les lignes. Utilise une compréhension pour créer des listes indépendantes.