Boa noite.
Gostaria de confirmar se eu entendi corretamente o trecho do código abaixo:
contagem_palavras[palavra] = contagem_palavras.get(palavra, 0) + 1
sendo palavras:
palavras = {'Python', 'se', 'tornou', 'uma', 'das', 'linguagens', 'de', 'programação', 'mais', 'populares', 'do', 'mundo'}
obs.: não escrevi a frase completa acima
Quando entra no for e vai buscar a "palavra in palavras", temos que lembrar que contagem_palavras está vazio, ou seja, {}, portanto, quando contagem_palavras.get(palavra,0) executa não encontrará a referida palavra em palavras e atribui 0 e, em seguida, +1.
Antes da primeira iteração temos, contagem_palavras = {}
Na primeira iteração temos portanto, contagem_palavras = {'Python': 1}
Na segunda iteração, quando verifica "palavra in palavras" é a vez da verificação da palavra 'se', mas ela não está em contagem_palavras, pois lá temos apenas {'Python': 1}. Como não encontramos 'se', atribui 0 e, em seguida, soma 1. Resultou, portanto, a segunda iteração em contagem_palavras ={'Python': 1, 'se': 1}
e assim continuará até a última palavra de palavras.
Entendi direito?
Quando não encontrar a palavra, vai somar 1, pois a palavra é nova e vai contar 1 vez. Na próxima iteração, se a palavra se repetir, vai somar 1.