1
resposta

Dúvida sobre a interpretação do código

Colegas, minha dúvida é sobre o seguinte código passado na aula:

meu_texto = 'Bem vindo meu nome é Guilherme eu gosto muito de nomes e tenho meu cachorro e gosto muito de cachorro'
meu_texto = meu_texto.lower()

aparicoes = {}

for palavra in meu_texto.split():
    ate_agora = aparicoes.get(palavra, 0)
    aparicoes[palavra] = ate_agora + 1
print(aparicoes)

Na hora que eu faço o "ate_agora + 1" por que os resultados das chaves não aparecem com 1 a mais? Vou tentar transcrever minha dúvida escrevendo a primeira iteração do "meu_texto.split()" e fazendo em forma de comentários o meu questinamento.

for palavra in meu_texto.split():
    ate_agora = aparicoes.get(palavra, 0)   # A 1ª iteração é com a palavra 'bem' e o valor dela é 1, valor este que será atribuído a variável 'ate_agora'
    aparicoes[palavra] = ate_agora + 1   # O 1 do 'ate_agora' + o 1 do código, gera um valor de 2 para a chave 'bem' (que equivale ao aparicoes['bem'])
print(aparicoes)  # Mas quando a chave 'bem' é escrita depois de toda a iteração ela aparece com o valor 1. Por que não aparece com valor 2?

Se alguém puder me ajudar a esclarecer essa minha dúvida ficarei muito agradecido. Abraço!

1 resposta

Olá, Guilherme. Tudo bem?

Para entender o que está acontecendo no código, primeiro é importante entender o que o método .get() faz nesse trecho do código:

    ate_agora = aparicoes.get(palavra, 0)

O método .get() busca no dicionário um elemento que tenha como chave o valor passado, no nosso caso o valor guardado na variável palavra. Caso ele encontre o elemento, ele retorna o valor do mesmo. E caso ele não encontre o elemento, ele retorna o valor que definimos, no nosso caso o número 0.

  • Assim, a primeira vez que a palavra bem aparece na iteração, o método .get() busca algum elemento que tenha essa chave no dicionário aparicoes. Mas lembra que a palavra bem ainda não existe dentro desse dicionário? Então é atribuído para a variável ate_agora o valor 0.
  • Na próxima linha de código, adicionamos a palavra bem ao dicionário como uma chave, e atribuímos o valor de ate_agora + 1, que equivale a 0 + 1, ou seja, 1:
    aparicoes[palavra] = ate_agora + 1
  • Como a palavra bem não aparece mais nenhuma vez no texto, seu valor final no dicionário continua sendo 1.

Para ficar mais claro, vamos entender o que acontece com uma palavra que aparece mais de uma vez no texto como, por exemplo, cachorro.

  • Quando a palavra cachorro aparece a primeira vez no texto, o método .get() procura essa palavra no dicionário aparicoes. Como ele não a encontra, ele retorna para à variável ate_agora o valor 0. Na próxima linha de código, a palavra cachorro é adicionada no dicionário e é atribuído o valor de ate_agora + 1, que é igual a 0 + 1, ou seja, 1:

  • A segunda vez que a palavra cachorro aparece, o método .get() procura essa palavra no dicionário aparicoes. Agora, como essa palavra já existe no dicionário, o método retorna o valor dela, que é 1 e atribui esse valor à variável ate_agora. Na linha seguinte, o valor referente a chave cachorro é atualizado para o valor de ate_agora + 1, que é 1 + 1, ou seja 2.

  • Como a palavra cachorro não aparece mais vezes, seu valor final é 2.

Espero ter esclarecido sua dúvida. Qualquer outra questão estou a disposição.

Abraços. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!