Python criando um dicionário de listas

Quero criar um dicionário cujos valores sejam listas. Por exemplo

{
  1: ['1'],
  2: ['1','2'],
  3: ['2']
}

Se eu fizer

d = dict()
a = ['1', '2']
for i in a:
    for j in range(int(i), int(i) + 2): 
        d[j].append(i)

Eu recebo um KeyError, porque d [...] não é uma lista. Nesse caso, posso adicionar o seguinte código após a atribuição de a para inicializar o dicionári

for x in range(1, 4):
    d[x] = list()

Existe uma maneira melhor de fazer isso? Digamos que não conheço as chaves de que preciso até estar no segundofor ciclo. Por exemplo

class relation:
    scope_list = list()
...
d = dict()
for relation in relation_list:
    for scope_item in relation.scope_list:
        d[scope_item].append(relation)

Uma alternativa seria substituir

d[scope_item].append(relation)

co

if d.has_key(scope_item):
    d[scope_item].append(relation)
else:
    d[scope_item] = [relation,]

Qual a melhor forma de lidar com isto? Idealmente, anexar "apenas funcionaria". Existe alguma maneira de expressar que eu quero um dicionário de listas vazias, mesmo que eu não conheça todas as chaves quando crio a lista?

questionAnswers(12)

yourAnswerToTheQuestion