Oi pessoal, tudo bem? Consegui replicar o "colocando tudo em prática", mas ainda fiquei com duas dúvidas que estão correlacionadas. Será que conseguem me ajudar?
Pergunta 1:
Neste trecho:
proporcoes = [(letra, frequencia / total_de_caracteres) for letra, frequencia in aparicoes.items()]
proporcoes = Counter(dict(proporcoes))
Após a criação do listcomp, se o próprio "counter" já cria um dict, porque necessariamente eu preciso passar o counter como um dict, conforme exposto na aula? Existe alguma função no counter que não possa ser acessada se não for passado como um dict?
Pergunta 2 (no mesmo trecho da pergunta 1):
Porque necessariamente foi criado um dict pras proporções? Existe alguma outra vantagem ou é somente por poder usar o "most.common" e organizar os valores do maior pro menor com o "counter"? Existe alguma forma de fazer todas as ordenações mantendo o "proporcoes" como uma lista?
Fora isso, compartilho abaixo o meu código. Fiz duas adaptações:
- No próprio listcomp eu já fiz o cálculo pra multiplicar por 100 e difini as casas do float
- Apliquei o most.common na própria linha do "Counter"
Ficou assim:
def define_texto(texto):
texto_higi = texto.lower()
dict_letras = Counter(texto_higi)
qtd_total_letras = sum(dict_letras.values())
print(qtd_total_letras)
valor_relativo = [(letras, ("{:.2f}%".format(100*(incidencia/qtd_total_letras)))) for letras, incidencia in dict_letras.items()]
valor_relativo_mais_comuns = Counter(dict(valor_relativo)).most_common(10)
for letra, percentual in valor_relativo_mais_comuns:
print(letra, "-->" , percentual)
Valeu!!!