En muchos flujos de trabajo en los que desea adjuntar un valor predeterminado / inicial para claves arbitrarias, no necesita hacer un hash de cada clave individualmente antes de tiempo. Puedes usar collections.defaultdict. Por ejemplo:
from collections import defaultdict
d = defaultdict(lambda: None)
print(d[1]) # None
print(d[2]) # None
print(d[3]) # None
Esto es más eficiente, ahorra tener que hacer hash todas sus claves en la instanciación. Además, defaultdictes una subclase de dict, por lo que generalmente no es necesario volver a convertir a un diccionario normal.
Para los flujos de trabajo en los que necesita controles sobre las teclas permitidas, puede usar dict.fromkeyssegún la respuesta aceptada:
d = dict.fromkeys([1, 2, 3, 4])
dict.fromkeys([1, 2, 3], [])todas las teclas se asignan a la misma lista, y si modifica una, las modificará todas.