Python dict pour des recherches rapides par clé et des valeurs par défaut
Un dict Python associe des clés hachables à des valeurs pour des recherches rapides par clé.
Utilisez-le quand chaque élément a un identifiant unique et que vous avez besoin d’un accès rapide par cette clé.
dict.get vous permet de fournir une valeur par défaut pour les clés manquantes afin de sécuriser les recherches.
Cela fait des dicts un bon choix pour les tâches basées sur des clés.
Exemple Python Dict Pour Recherche Par Clé
Sortie :
La sortie apparaîtra ici...
Sortie :
utilisateur_2 : Noah
utilisateur_3 : inconnu
Comment Fonctionne Cet Exemple
- Le littéral dict crée un mappage d’IDs utilisateur vers des noms ; les clés doivent être hachables, donc les chaînes sont un choix sûr.
name_by_id["utilisateur_2"]renvoie la valeur d’une clé existante, mais cette forme lèveKeyErrorquand la clé est absente.getrenvoie la valeur par défaut fournie lorsque la clé est absente, ce qui évite l’exception pour les clés optionnelles.
Erreurs Courantes
Erreur : Utiliser d[key] lorsque la clé est optionnelle.
Faux :
status = status_by_order[order_id]
Vrai :
status = status_by_order.get(order_id, "introuvable")
Pourquoi ça arrive : d[key] lève KeyError pour les clés manquantes, tandis que get renvoie une valeur par défaut quand la clé est absente.
Erreur : Utiliser une clé non hachable comme une liste.
Faux :
bad_key = ["A101"]
status_by_order[bad_key] = "expédié"
Vrai :
good_key = ("A101",)
status_by_order[good_key] = "expédié"
Pourquoi ça arrive : les clés de dict doivent être hachables, et les listes ne le sont pas ; les tuples fonctionnent parce qu’ils sont hachables quand leur contenu l’est.
Erreur : Penser que 1, 1.0 et True sont des clés distinctes.
Faux :
d = {1: "un", True: "booléen"}
Vrai :
d = {1: "un", 2: "deux"}
Pourquoi ça arrive : des clés qui se comparent égales pointent vers la même entrée, donc des affectations ultérieures écrasent les précédentes.
Python dict vs list : lequel utiliser
| Utilisez dict quand… | Utilisez list quand… |
|---|---|
| Vous devez associer une clé à une valeur et la rechercher par cette clé. | Vous avez juste besoin d’une séquence ordonnée d’éléments ou d’un accès positionnel. |
| Les clés sont des identifiants stables comme des IDs, des codes ou des noms. | La position de chaque élément est la principale façon d’y accéder. |
Règle de base : utilisez un dict pour les recherches par clé, et une list pour un accès ordonné par index.
Considérations De Performance
L’implémentation des dicts en Python est très optimisée et fonctionne très bien comme mappage général, ce qui explique pourquoi c’est le choix par défaut pour des recherches répétées par clé.
Si vous n’avez besoin que d’un accès ordonné par index, une list peut être plus simple car les dicts sont indexés par clés plutôt que par positions.
En itérant sur des vues de dict, évitez d’ajouter ou de supprimer des entrées pendant la boucle ; muter pendant l’itération peut lever RuntimeError, alors copiez d’abord les clés si vous devez les modifier.
Plus D’Exemples
Fusionner des valeurs par défaut avec des surcharges (Python 3.9+) :
defaults = {"tentatives": 2, "delai": 5}
overrides = {"delai": 10}
config = defaults | overrides
print(config)
| crée un nouveau dict et, lorsque les clés se chevauchent, le dict de droite l’emporte, ce qui est utile pour des réglages en couches.
Construire un dict à partir de paires clé/valeur :
language_labels = [("en", "Hello"), ("fr", "Bonjour")]
labels_by_locale = dict(language_labels)
print(labels_by_locale)
dict() accepte un itérable de paires clé/valeur, ce qui est pratique lorsque vos données arrivent sous forme de tuples.
Quand utiliser Python dict
- Vous devez récupérer ou mettre à jour des valeurs par une clé stable, comme des IDs, des codes ou des noms.
- Vous voulez un ordre d’itération prévisible qui respecte l’ordre d’insertion.
- Vous avez besoin de valeurs par défaut sûres pour les clés manquantes avec
getou des vérifications explicites. - Vous devez combiner des dictionnaires avec des règles de priorité claires.
- N’utilisez pas un dict si vous n’avez besoin que d’un accès positionnel à des éléments ordonnés ; une list est plus simple dans ce cas.