Para responder a la pregunta " ¿cómo puedo saber si un índice dado en ese dict ya se ha establecido en un valor distinto de Ninguno ", preferiría esto:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
Esto se ajusta al concepto ya invocado de EAFP (es más fácil pedir perdón que permiso). También evita la búsqueda de claves duplicadas en el diccionario como lo haría en key in my_dict and my_dict[key] is not None
lo que es interesante si la búsqueda es costosa.
Para el problema real que ha planteado, es decir, incrementar un int si existe o establecerlo en un valor predeterminado, de lo contrario, también recomiendo
my_dict[key] = my_dict.get(key, default) + 1
como en la respuesta de Andrew Wilkinson.
Hay una tercera solución si está almacenando objetos modificables en su diccionario. Un ejemplo común de esto es un mapa múltiple , donde almacena una lista de elementos para sus claves. En ese caso, puede usar:
my_dict.setdefault(key, []).append(item)
Si no existe un valor para clave en el diccionario, el método setdefault lo establecerá en el segundo parámetro de setdefault. Se comporta como un my_dict [clave] estándar, devolviendo el valor de la clave (que puede ser el nuevo valor establecido).