A partir do Python 2.5, ao estender dicionários, você pode dar a suas classes um método __missing_, que será executado toda vez que você tentar acessar um índice inexistente. Veja:
class Counter(dict):
def __missing__(self, key):
self[key]=0
return self[key] Veja funcionando:
>>> votos=['john','paul','john','john','ringo',
... 'george','paul','ringo','ringo','john',
... 'paul','john','george','paul','paul',
... 'john','paul','john','ringo','paul']
>>> c=Counter()
>>> for v in votos:
... c[v]+=1
...
>>> c
{'ringo': 4, 'paul': 7, 'john': 7, 'george': 2}
View Comments (1)
Enquanto um Counter é um bom exemplo do __missing__, vale lembrar quem tem a sorte de poder usar python 3.1 tem pode usar a classe collections.Counter para esse fim: http://docs.python.org/dev/library/collections.html#collections.Counter
O collections.defaultdict também pode ser usado pra isso.