Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque a função dentro de dafultdict não tem parenteses?

A função int se chama por int(), certo? Porque ao colocar dentro do defaultdict colocamos somente int e não int()?

aparicoes = defaultdict(int)?

1 resposta
solução!

Ricardo,

Eu li os exemplos nos documentação do Python:

>>> from collections import defaultdict

>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
...     d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]

e

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
...     d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

os parâmetros int e list dependendo do seu caso de uso. Normalmente, um dicionário Python lança a KeyError se você tentar obter um item com uma chave que não está atualmente no dicionário. Por outro lado, defaultdict simplesmente criará quaisquer itens que você tentar acessar (desde que eles ainda não existam). Para criar um item "padrão", ele chama o objeto de função que você passa para o construtor (mais precisamente, é um objeto "callables" arbitrário, que inclui objetos de função e tipo). Para o primeiro exemplo, os itens padrão são criados usando int() que retornará o objeto inteiro 0. Para o segundo exemplo, os itens padrão são criados usando list() que retorna um novo objeto de lista vazio.

int - um tipo numérico

int() - um método que retorna um objeto inteiro de qualquer número ou string

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software