См. документы для setdefault()
метода:
setdefault (клавиша [, по умолчанию])
Если ключ
в словаре вернуть его значение.
Если нет, введите ключ со значением
по умолчанию и вернуть по умолчанию. дефолт
по умолчанию Нет.
Вы можете использовать это как один вызов, который получит b, если он существует, или установить b в пустой список, если он еще не существует - и в любом случае вернуть b:
>>> key = 'b'
>>> val = 'a'
>>> print d
{}
>>> d.setdefault(key, []).append(val)
>>> print d
{'b': ['a']}
>>> d.setdefault(key, []).append('zee')
>>> print d
{'b': ['a', 'zee']}
Объедините это с простой проверкой «не в», и вы сделали то, что вам нужно, в трех строках:
>>> b = d.setdefault('b', [])
>>> if val not in b:
... b.append(val)
...
>>> print d
{'b': ['a', 'zee', 'c']}