Explication de la leçon
Après cette leçon, tu seras capable de :
.get(key, default) pour lire des clés facultatives tout en préservant les valeurs falsy existantes..items() et décompacter chaque paire.Les dictionnaires associent des noms à des valeurs. La leçon précédente a couvert record[key], qui lève KeyError pour une clé manquante. Lorsqu'un champ facultatif est attendu, record.get(key, fallback) renvoie la valeur de repli uniquement si la clé est manquante. Une valeur présente de 0, False, "" ou None reste inchangée.
Un dictionnaire est itérable : for key in record parcourt ses clés. Les méthodes explicites .keys() et .values() te permettent d'accéder uniquement aux clés ou aux valeurs. Utilise .items() lorsque tu as besoin des deux : chaque itération fournit une paire (key, value) que tu peux décompacter.
Les dictionnaires Python modernes préservent l'ordre d'insertion, de sorte que boucler sur un dictionnaire inchangé suit l'ordre dans lequel ses entrées ont été insérées. Cela ne signifie pas que les clés sont des indices numériques, et n'implique aucun tri alphabétique.
Le .get() d'un dictionnaire sert à la recherche ; .items() sert à l'itération de paires. Ils résolvent des problèmes différents et deviennent particulièrement puissants lorsqu'ils sont combinés avec des comptages conditionnels.
La valeur de repli ne s'applique que lorsque la clé est absente.
limits = {"retries": 0, "timeout": 15}
print(limits.get("retries", 3))
print(limits.get("workers", 2))Sortie :
0
2Itérer directement sur le dictionnaire donne ses clés ; .keys() rend cette intention explicite.
channels = {"email": True, "sms": False}
for channel in channels.keys():
print(f"Channel: {channel}")Sortie :
Channel: email
Channel: smsUtilise .values() lorsque les clés n'affectent pas le calcul.
durations = {"lint": 8, "build": 12, "test": 20}
total = 0
for duration in durations.values():
total += duration
print(f"Total: {total}")Sortie :
Total: 40.items() fournit chaque étiquette et sa valeur correspondante ensemble.
statuses = {"api": "ready", "worker": "paused"}
for name, status in statuses.items():
print(f"{name}: {status}")Sortie :
api: ready
worker: paused| Besoin | Python |
|---|---|
| Recherche facultative | record.get("name", "unknown") |
| Clés uniquement | record.keys() ou for key in record |
| Valeurs uniquement | record.values() |
| Clés et valeurs | record.items() |
| Boucler sur les paires | for key, value in record.items(): |
record.get("key", default) ne remplace pas une valeur falsy présente.for a, b in record itère sur les clés, pas sur les paires ; utilise .items() pour décompacter les entrées..keys(), .values() et .items() renvoient des vues, pas des copies ordinaires de listes..values() fait perdre l'étiquette de clé associée lorsque ta sortie a besoin des deux.