Maison > Questions et réponses > le corps du texte
Je souhaite tester si une clé existe dans le dictionnaire avant de mettre à jour sa valeur. J'ai écrit le code suivant :
if 'key1' in dict.keys(): print "blah" else: print "boo"
Je pense que ce n'est pas la meilleure façon d'accomplir cette tâche. Existe-t-il une meilleure façon de tester les clés d’un dictionnaire ?
P粉6748763852023-10-09 00:56:30
Utiliser directementkey in my_dict
而不是key in my_dict.keys()
:
if 'key1' in my_dict: print("blah") else: print("boo")
Ce sera plus rapide car il utilise un hachage O(1) du dictionnaire, plutôt que d'effectuer une recherche linéaire O(n) sur la liste des clés.
P粉9147310662023-10-09 00:33:49
Y a-t-il une clé dans
d = {"key1": 10, "key2": 23} if "key1" in d: print("this will execute") if "nonexistent key" in d: print("this will not")
Utilisez dict.get()
pour fournir une valeur par défaut lorsque la clé n'existe pas :
d = {} for i in range(100): key = i % 10 d[key] = d.get(key, 0) + 1
Pour fournir une valeur par défaut pour chaque clé, utilisez dict.setdefault()
sur chaque tâche :
d = {} for i in range(100): d[i % 10] = d.setdefault(i % 10, 0) + 1
...ou mieux encore, utilisez le module defaultdict
< /a> 来自 collections
:
from collections import defaultdict d = defaultdict(int) for i in range(100): d[i % 10] += 1