Je voulais tester si une clé existe dans un dictionnaire avant de mettre à jour la valeur de cette clé. 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 un meilleur moyen de tester la présence d'une clé dans le dictionnaire ?
31 votes
Appel à
dict.keys()
crée une liste de clés, selon la documentation docs.python.org/2/library/stdtypes.html#dict.keys mais je serais surpris si ce modèle n'était pas optimisé pour, dans une implémentation sérieuse, se traduire parif 'key1' in dict:
.7 votes
J'ai finalement découvert pourquoi beaucoup de mes scripts Python étaient si lents :) :(. C'est parce que j'ai utilisé
x in dict.keys()
pour vérifier les clés. Et c'est arrivé parce que la façon habituelle d'itérer sur les clés en Java estfor (Type k : dict.keySet())
cette habitude causantfor k in dict.keys()
pour se sentir plus naturel quefor k in dict
(ce qui devrait encore être correct en termes de performances ?), mais la vérification des clés devient alorsif k in dict.keys()
aussi, ce qui est un problème...4 votes
@EvgeniSergeev
if k in dict_:
teste la présence de k dans les KEYS de dict_, donc vous n'avez toujours pas besoin dedict_.keys()
. (Cela m'a fait tiquer, car j'ai l'impression qu'il s'agit d'un test pour une valeur en dictée. Mais ce n'est pas le cas).1 votes
@ToolmakerSteve C'est vrai, mais non seulement vous n'en avez pas besoin, mais ce n'est pas une bonne pratique.
26 votes
Essayez "key in dict"