Pour répondre à la question " comment puis-je savoir si un index donné dans ce dict a déjà été défini sur une valeur non nulle ", je préférerais ceci:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
Cela est conforme au concept déjà invoqué d'EAFP (plus facile de demander pardon puis permission). Cela évite également la recherche de clé en double dans le dictionnaire comme ce serait le cas dans key in my_dict and my_dict[key] is not None
ce qui est intéressant si la recherche est coûteuse.
Pour le problème réel que vous avez posé, c'est-à-dire incrémenter un int s'il existe, ou le définir sur une valeur par défaut sinon, je recommande également le
my_dict[key] = my_dict.get(key, default) + 1
comme dans la réponse d'Andrew Wilkinson.
Il existe une troisième solution si vous stockez des objets modifiables dans votre dictionnaire. Un exemple courant pour cela est un multimap , où vous stockez une liste d'éléments pour vos clés. Dans ce cas, vous pouvez utiliser:
my_dict.setdefault(key, []).append(item)
Si une valeur pour key n'existe pas dans le dictionnaire, la méthode setdefault la définira sur le deuxième paramètre de setdefault. Il se comporte exactement comme un my_dict [clé] standard, renvoyant la valeur de la clé (qui peut être la nouvelle valeur définie).