Questão de Programação — Python — Quadrix 2025
- Código
- qg599036
- Banca
- Quadrix
- Órgão
- CRMV-GO
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Administrativo
- CCerto
- EErrado
GabaritoC — Certo
dict.fromkeys com valores mutáveisGabarito: ✅ 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".
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.
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