Questão de Programação — Python — Quadrix 2025
- Código
- qg603282
- Banca
- Quadrix
- Órgão
- SEDF
- Ano
- 2025
- Nível
- Superior
- Cargo
- Professor de Educação Básica: Eletrônica
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C (CERTO). A função check(d) compara o dicionário original d com um novo dicionário construído por uma dictionary comprehension que itera sobre os pares chave-valor de d — e, como a compreensão reconstrói exatamente os mesmos pares, os dois dicionários são sempre iguais, retornando True para qualquer dicionário válido. A afirmação está correta.
O coração da questão é entender o que a dictionary comprehension {k: v for k, v in d.items()} faz. Ela percorre cada par chave-valor do dicionário original e os reinsere em um novo dicionário. Como a iteração preserva a ordem de inserção (a partir do Python 3.7, dicionários mantêm ordem de inserção) e os pares são os mesmos, o resultado é um dicionário idêntico ao original. A comparação d == novo_dicionario verifica se ambos têm as mesmas chaves e valores — não a identidade do objeto — portanto, sempre será True.
Vamos testar com um exemplo concreto. Se d = {'a': 1, 'b': 2}, a compreensão gera {'a': 1, 'b': 2}. A comparação {'a': 1, 'b': 2} == {'a': 1, 'b': 2} retorna True. Mesmo com dicionários aninhados, como d = {'x': {'y': 3}}, a compreensão copia a referência para o dicionário interno, e a comparação de igualdade recursiva também retorna True. Não há caso em que a função retorne False para um dicionário válido.
A única ressalva seria se d não fosse um dicionário — mas o enunciado afirma explicitamente que d é um dicionário. Se d fosse None, por exemplo, d.items() levantaria um AttributeError, mas isso está fora do escopo da afirmação. A banca explora justamente a compreensão de que a dictionary comprehension reconstrói o dicionário de forma idêntica, e a comparação de igualdade em Python compara conteúdo, não identidade de objeto.
A banca pode tentar confundir o candidato fazendo-o pensar que a comparação == verifica se os dois objetos são o mesmo objeto na memória (identidade). Em Python, == compara igualdade de conteúdo — chaves e valores — enquanto is compara identidade de objeto. Como a compreensão cria um novo objeto com o mesmo conteúdo, == retorna True. Se a comparação fosse d is {k: v for k, v in d.items()}, aí sim retornaria False, pois seriam objetos distintos. Fique atento a essa distinção!
A afirmação está correta. A função check(d) constrói um novo dicionário com a dictionary comprehension {k: v for k, v in d.items()}, que itera sobre todos os pares chave-valor de d e os reinsere. Como a comparação == em Python verifica igualdade de conteúdo (mesmas chaves e valores), o resultado é sempre True para qualquer dicionário d. Não há cenário em que a função retorne False para um dicionário válido.
Gabarito: letra C (CERTO).
Link permanente: /questoes/qg603282