Параметром конструктора defaultdict является функция, которая будет вызываться для создания новых элементов. Так что давайте использовать лямбду!
>>> from collections import defaultdict
>>> d = defaultdict(lambda : defaultdict(int))
>>> print d[0]
defaultdict(<type 'int'>, {})
>>> print d[0]["x"]
0
Начиная с Python 2.7, есть еще лучшее решение с использованием Counter :
>>> from collections import Counter
>>> c = Counter()
>>> c["goodbye"]+=1
>>> c["and thank you"]=42
>>> c["for the fish"]-=5
>>> c
Counter({'and thank you': 42, 'goodbye': 1, 'for the fish': -5})
Некоторые бонусы
>>> c.most_common()[:2]
[('and thank you', 42), ('goodbye', 1)]
Для получения дополнительной информации см. PyMOTW - Коллекции - Типы данных контейнера и Документация Python - коллекции