A linguagem Python oferece diversos pacotes nativos muito u...

Próximas questões
Com base no mesmo assunto
Q4196038 Programação
A linguagem Python oferece diversos pacotes nativos muito utilizados por cientistas de dados. Um dos mais utilizados é o pacote collections. Considere o código abaixo:

from collections import Counter
counter1 = Counter({'Constitucionais e Royalties': 1302.58 ,'Legais, Voluntárias e Específicas':12000})
counter2 = Counter({'Constitucionais e Royalties': 93939.08 ,'Legais, Voluntárias e Específicas':3893.57})
Counter_max = ___________        

Para que os dois contadores sejam mesclados em um único que apresente somente os valores máximos para cada chave, qual código o analista de dados deve utilizar no lugar do sublinhado?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: Em collections.Counter, a operação que combina dois contadores preservando, para cada chave, o maior valor é o operador '|'.

Tema central: Operações com Counter
Análise das alternativas
A
Errada
Counter(counter1, counter2) não corresponde à operação de união por máximos entre dois Counter. A sintaxe do construtor, nessa forma, não implementa o critério pedido de manter o maior valor por chave.
B
Errada
counter1.update(counter2) está errada porque update agrega os valores das chaves coincidentes por soma. A questão não pede soma; pede seleção do maior valor por chave.
C
Errada
Counter([counter1, counter2]) não produz, por chave, o maior valor entre os dois Counter. Essa forma não implementa a regra de máximos por chave.
D
Certa
A alternativa D está certa porque, em collections.Counter, o operador '|' realiza a união entre contadores, produzindo um novo Counter no qual cada chave fica associada ao maior valor encontrado entre os dois objetos. Esse é exatamente o critério pedido pela questão: mesclar os contadores preservando os máximos por chave.
E
Errada
counter1 & counter2 está errada porque, em Counter, '&' produz a interseção, mantendo o menor valor para cada chave comum. O pedido era justamente o oposto: manter os maiores valores.
Pegadinha da questão
A confusão real era entre operações diferentes de Counter: update soma valores, '&' mantém mínimos e '|' mantém máximos. Quem não lembrar da semântica própria de Counter troca facilmente essas operações.
Dica para questões semelhantes
  • Se o enunciado pedir, em Counter, o maior valor por chave ao combinar contadores, procure o operador '|'.
  • Se a operação em Counter envolver soma de valores por chave, isso aponta para update, não para união por máximos.
  • Ao comparar '|' e '&' em Counter, lembre: '|' trabalha com máximos; '&' trabalha com mínimos.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Na linguagem Python, a classe do módulo estende o comportamento de dicionários e oferece operadores matemáticos e de conjuntos para simplificar a manipulação de contagens.

O operador de união (|): Quando usado entre dois objetos , ele realiza a união deles retornando apenas o valor máximo para cada chave presente em um ou em ambos os contadores

Counter_max[key] = max(counter1[key], counter2[key])

o resultado de

será:

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo