As referências de palavras são um método vantajoso para armazenar informações para posterior recuperação pelo nome (chave). As chaves têm de ser únicas, não podem ser alteradas, e são cordas comuns. As qualidades de uma referência a palavras podem ser qualquer coisa. Para algumas aplicações, as qualidades são simples, por exemplo, números inteiros e cadeias de caracteres.

Fica ainda mais fascinante quando as qualidades em uma palavra de referência são acumulações (registros, pictos, etc.) Para esta situação, o valor (um rundown ou ditado vago) deve ser introduzido a primeira passagem através de uma determinada chave é utilizada. Embora isto seja geralmente simples de se fazer fisicamente, o tipo de ditado por defeito mecaniza e melhora este tipo de tarefas.

Um padrão funciona exatamente como um típico ditame, no entanto, ele é instaurado com uma capacidade (“fábrica de processamento padrão”) que não aceita contenções e dá ao padrão um incentivo para uma chave inexistente.

Um defauldito nunca irá levantar um KeyError. Qualquer chave que não exista recebe o valor retornado pela fábrica padrão.

>>> de cobranças import importam por defeito

>>> ice_cream = defaultdict(lambda: ‘Vanilla’)

>>> 

>>> ice_cream = defaultdict(lambda: ‘Vanilla’)

>>> ice_cream[‘Sarah’] = ‘Chunky Monkey’ (macaco volumoso)

>>> ice_cream[‘Abdul’] = ‘Butter Pecan’ (Manteiga Pecan)

>>> print ice_cream[‘Sarah’]

Macaco-grossudo

>>> print ice_cream[‘Joe’]

Baunilha

>>> 

Certifique-se de passar o artigo de capacidade para o padrão(). Tente não chamar a capacidade, por exemplo, defaultdict(func), não defaultd.ict(func()).

No modelo em anexo, é utilizado um valor padrão para a totalização. A fábrica padrão é int, que, portanto, tem uma estimativa padrão de zero. (Nota: “lambda: 0″ também funcionaria nesta circunstância). Para cada alimento no degradado, o valor é aumentado por um em que a chave é o alimento. Não temos que garantir que o alimento seja a partir de agora uma chave – ele utilizará a estimativa padrão de zero

>> de cobranças import importam por defeito

>>> food_list = ‘spam spam spam spam spam spam spam spam spam eggs spam’.split()

>>> food_count = valor padrão de int(int) # valor padrão de int é 0

>>> para comida em lista_de_alimentação:

… food_count[comida] += 1 # incrementa o valor do elemento por 1

defaultdict(<type ‘int’>, {‘eggs’: 1, ‘spam’: 7})

>>> 

No próximo exemplo, começamos com uma lista de estados e cidades. Queremos construir um dicionário onde as chaves são as abreviaturas dos estados e os valores são listas de todas as cidades para esse estado. Para construir este dicionário de listas, nós usamos um dicionário padrão com uma fábrica de listas padrão. Uma nova lista é criada para cada nova chave.

>>> de cobranças import importam por defeito

>>> city_list = [(‘TX’,’Austin’), (‘TX’,’Houston’), (‘NY’,’Albany’), (‘NY’, ‘Syracuse’), (‘NY’, ‘Buffalo’), (‘NY’, ‘Rochester’), (‘TX’, ‘Dallas’), (‘CA’, ‘Sacramento’), (‘CA’, ‘Palo Alto’), (‘GA’, ‘Atlanta’)].

>>> 

>>> cidades_por_estado = default(list)

>>> para estado, cidade em cidade_list:

…. cidades_por_estado[estado].append(cidade)

para estado, cidades em cidades_por_estado.iteritems():

… print state, ‘, ‘.join(cities)

NY Albany, Syracuse, Buffalo, Rochester

CA Sacramento, Palo Alto

GA Atlanta

TX Austin, Houston, Dallas