Очень элегантный способ (начиная с Python 2.5) - использовать defaultdict
из модуля "коллекций":
>>> from collections import defaultdict
>>> h = defaultdict(list)
>>> h['a'].append('b')
>>> h
defaultdict(<type 'list'>, {'a': ['b']})
defaultdict
походит на dict, но предоставляет значение по умолчанию, используя любой конструктор, который вы передали ему, когда создавали его (в данном примере, список).
Мне особенно это нравится в методе setdefault
dict, потому что 1) вы определяете переменную как defaultdict, и, как правило, никаких других изменений в коде не требуется (за исключением, возможно, удаления предыдущих ключей для значений по умолчанию); и 2) setdefault - ужасное имя: P