2
respostas

Desafio: hora da prática - Exercício 11

Olá pessoal,

Achei o exercício 11 bem interessante e tentei usar duas formas de resolução

  1. Uma empresa de e-commerce está interessada em analisar as vendas dos seus produtos. Os dados das vendas foram armazenados em um dicionário

Confesso que usando o key=vendas.get na primeira resolução, ainda fiquei com um pouco de dúvida do uso.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigada!

2 respostas

Olá, Vanessa. Como vai?

É excelente ver você explorando diferentes abordagens para resolver o mesmo problema! O uso de dicionários em Python é uma habilidade fundamental para a análise de dados, e entender as nuances dessas estruturas ajuda muito no dia a dia como Especialista de Processos.

Analisando suas duas resoluções, ambas estão corretas no objetivo final, mas a segunda imagem corrige um pequeno detalhe de sintaxe que passou despercebido na primeira (o uso de chaves {total_vendas} dentro da f-string para que o valor seja calculado de verdade, em vez de exibir o texto literal).

A sua dúvida sobre o max(vendas, key=vendas.get) é super comum. Essa linha de código é um atalho muito poderoso, mas que esconde uma lógica conceitual rica por baixo do capô. Vamos entender exatamente o que o Python faz nessa expressão.

Como funciona o max() com o argumento key?

Por padrão, quando passamos um dicionário direto para a função max(vendas), o Python olha apenas para as chaves do dicionário (os nomes dos produtos) e tenta encontrar o maior valor com base na ordem alfabética. Nesse caso, ele retornaria "Produto F", o que estaria incorreto para a sua análise de negócios.

Para resolver isso, nós usamos o parâmetro key. Ele serve para dizer ao Python: "Não faça a comparação usando a chave original. Antes de comparar, passe cada chave por esta função que estou te indicando e compare os resultados que ela devolver".

O método .get de um dicionário é uma função que recebe uma chave e devolve o valor numérico associado a ela.

Veja o passo a passo do que o Python faz internamente ao executar max(vendas, key=vendas.get):

  1. O Python pega a chave "Produto A", executa vendas.get("Produto A") e descobre o valor 300.
  2. Ele pega a chave "Produto B", executa vendas.get("Produto B") e descobre o valor 80.
  3. Ele repete isso para todos os produtos da lista.
  4. No final, a função max() compara os números encontrados (300, 80, 60, 200, 250, 30).
  5. Ao identificar que o maior número é 300, a função max() retorna a chave original correspondente a esse número, que é "Produto A".

Comparando as duas soluções

  • A abordagem com o laço for (Primeira Imagem): É uma lógica clássica e explícita. Ela é excelente para algoritmos genéricos, pois o passo a passo fica evidente (iniciar com um valor baixo e ir substituindo à medida que encontra um maior).
  • A abordagem com o max() (Segunda Imagem): É a forma mais "pythônica" e performática de resolver o problema. Ela economiza linhas de código e aproveita funções internas da linguagem que já são otimizadas em C por debaixo do capô.

Utilizar o key=vendas.get é uma excelente prática em análise de dados com Python, pois reduz a complexidade visual do código e torna a manutenção muito mais simples. Parabéns pelo empenho em testar os dois caminhos!

Espero que possa ter lhe ajudado!

Olá Evandro, muito obrigada pela explicação detalhada! Ajudou muito!