Pular para o conteúdo principal

Questão de Programação — Python — Quadrix 2025

ProgramaçãoPython
Código
qg599036
Banca
Quadrix
Órgão
CRMV-GO
Ano
2025
Nível
Superior
Cargo
Analista Administrativo
A respeito da lógica de programação, das linguagens de programação Python e da ferramenta Node.js, julgue o item a seguir.Em Python, ao criar um dicionário com dict.fromkeys(['a','b','c'], []), todas as chaves compartilham a mesma lista, de forma que alterações em uma chave afetam as demais.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Dicionários em Python: o comportamento de dict.fromkeys com valores mutáveis

Gabarito: ✅ CERTO. A afirmação está correta: dict.fromkeys(['a','b','c'], []) cria um dicionário em que todas as chaves apontam para o mesmo objeto de lista, de modo que alterações feitas por meio de uma chave são refletidas nas demais. Esse é um comportamento clássico e frequentemente cobrado em provas de Python, pois envolve a distinção entre valor imutável e valor mutável no método fromkeys.

O método dict.fromkeys(iterável, valor) é um construtor de dicionários que recebe uma sequência de chaves e um valor padrão. A pegadinha está no fato de que, quando o valor padrão é um objeto mutável (como uma lista, dicionário ou conjunto), o Python não cria uma cópia independente para cada chave — ele reutiliza a mesma referência para todas. Isso significa que d['a'], d['b'] e d['c'] são, na verdade, o mesmo objeto na memória.

Vamos ver na prática:

d = dict.fromkeys(['a', 'b', 'c'], [])
d['a'].append(1)
print(d)
# Saída: {'a': [1], 'b': [1], 'c': [1]}

Ao executar d['a'].append(1), o elemento 1 é adicionado à lista que é compartilhada por todas as chaves. Por isso, ao imprimir o dicionário, todas as chaves exibem [1]. Se a intenção fosse criar listas independentes, seria necessário usar uma compreensão de dicionário ou um loop explícito, como {chave: [] for chave in ['a', 'b', 'c']}.

A distinção crucial é entre imutáveis e mutáveis. Se o valor padrão fosse um objeto imutável, como um inteiro ou uma string, o comportamento seria diferente: como imutáveis não podem ser alterados in-place, a atribuição d['a'] = 5 simplesmente substituiria a referência daquela chave, sem afetar as demais. O problema surge justamente com mutáveis, que permitem modificação interna sem trocar a referência.

A banca explora exatamente essa confusão: o candidato que não conhece o comportamento interno do fromkeys pode achar que cada chave recebe uma lista própria, mas a realidade é que todas compartilham o mesmo objeto. Esse é um erro sutil e muito comum, especialmente para quem está acostumado com outras linguagens ou com a intuição de que "cada chave tem seu valor".

NÃO CAIA NESSA!

A banca aposta na intuição de que fromkeys cria valores independentes. A armadilha é que, com mutáveis, o Python reutiliza a mesma referência — alterar uma chave altera todas. Lembre-se: fromkeys com lista é compartilhamento, não cópia.

Item — ✅ CERTO

A afirmação descreve com precisão o comportamento de dict.fromkeys com um valor mutável. Como a lista [] é um objeto mutável, todas as chaves do dicionário resultante apontam para a mesma lista. Qualquer operação de modificação (como append, extend, remove) realizada através de uma chave altera o objeto compartilhado, afetando visivelmente todas as outras chaves. Portanto, o item está correto.

Gabarito: ✅ CERTO

Link permanente: /questoes/qg599036