Questão de Programação — Linguagens de programação — FGV 2026
Programação›Linguagens de programação
Código
fg127413
Banca
FGV
Órgão
AL-RO
Ano
2026
Nível
Superior
Cargo
Analista Legislativo (Tecnologia da Informação - Infraestrutura de Redes e Comunicação)
Um Engenheiro de Computação precisa utilizar uma lista de tuplas em Python para representar pares de votação no formato (Parlamentar_ID, Voto) e empregá-las como chaves em um dicionário, estrutura que depende de hashing.Assinale a alternativa correta acerca do conceito de imutabilidade em Python e de como ele determina quais objetos podem ser usados como chaves em dicionários.
AObjetos mutáveis, como list e dict, podem ser usados como chaves porque em Python há o recalculo do hash dinamicamente.
BApenas objetos imutáveis, como tuple, str e int, podem ser usados como chaves de dicionários, pois o valor de hash de um objeto imutável é fixo e garante a integridade da tabela hash.
CA imutabilidade é irrelevante para o hashing; o Python usa o endereço de memória para calcular o hash.
DTuplas que contenham elementos mutáveis, como listas, podem ser usadas como chaves desde que o hash seja recalculado.
EClasses personalizadas não podem ser usadas como chaves de dicionário.
Revelar gabarito e comentário▾
GabaritoB — Apenas objetos imutáveis, como tuple, str e int, podem ser usados como chaves de dicionários, pois o valor de hash de um objeto imutável é fixo e garante a integridade da tabela hash.
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”.
Chaves de dicionário em Python e imutabilidade
Gabarito: letra B. Em Python, apenas objetos imutáveis e hasháveis podem ser usados como chaves de dicionário. Isso porque o valor de hash de um objeto deve permanecer constante durante sua vida útil para garantir a integridade da tabela hash. Objetos mutáveis (listas, dicionários, conjuntos) não são hasháveis e, portanto, não podem ser chaves. Tuplas são imutáveis, mas só são hasháveis se todos os seus elementos também forem imutáveis.
Alternativa A — ❌ Incorreta
Afirma que objetos mutáveis podem ser chaves porque o hash seria recalculado dinamicamente. Isso é falso: objetos mutáveis não são hasháveis justamente porque seu hash poderia mudar, violando a invariante da tabela hash. A tentativa de usar list ou dict como chave lança TypeError: unhashable type.
Alternativa B — ✅ Correta ⟵ GABARITO
Correta: descreve exatamente a regra — apenas objetos imutáveis (tuple, str, int, etc.) podem ser chaves, pois seu hash é fixo. Isso garante que a posição na tabela hash não se altere.
Alternativa C — ❌ Incorreta
Diz que a imutabilidade é irrelevante e que o Python usa o endereço de memória para o hash. Na verdade, o hash de objetos imutáveis é calculado a partir do conteúdo (e não do endereço), e objetos mutáveis não possuem __hash__ ou ele é definido como None.
Alternativa D — ❌ Incorreta
Afirma que tuplas com elementos mutáveis podem ser chaves se o hash for recalculado. Isso é falso: uma tupla que contenha uma lista, por exemplo, não é hashável, pois a lista não é hashável. O hash da tupla tentaria hash dos elementos, e falharia. O Python não recalcula hash automaticamente para contornar isso.
NÃO CAIA NESSA!
A alternativa D explora uma confusão comum: tuplas são imutáveis, mas o requisito para hash é que todos os elementos também sejam imutáveis. Tuplas com listas internas são imutáveis em estrutura, mas o hash não pode ser calculado porque a lista não é hashável. Portanto, não podem ser chaves.
Alternativa E — ❌ Incorreta
Afirma que classes personalizadas não podem ser chaves. Isso é falso: qualquer classe pode ser usada como chave se implementar __hash__() e __eq__() de forma consistente. Por padrão, instâncias de classes definidas pelo usuário são hasháveis (usam id como hash) e podem sim ser chaves.