Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não estou conseguindo entender a lógica.

categorias = {"FIC": "Ficção", "BIO": "Biografia", "HIS": "História", "SCI": "Ciência", "PHI": "Filosofia"}
livros_atualizados = []

for livro in lista_livros:
    livro_temp = {}
    for k, v in livro.items():
        if k == "categoria":
            livro_temp[k] = categorias[v]
        else:
            livro_temp[k] = v
    livros_atualizados.append(livro_temp)

Não entendi COMO esse if k == "categoria": entra no for, sendo que essa string faz parte de um dict?? por que usamos isso? não estou conseguindo entender essa lógica de trocar o nome, utilizando essa string. tambem fiquei com duvida na aula explicativa, sobre a mesma coisa.

2 respostas

Espero que ajude :

Imagine que você tem uma lista de dicionários, onde cada dicionário representa um livro. Algo assim:

lista_livros = [ {"titulo": "Livro A", "categoria": "FIC"}, {"titulo": "Livro B", "categoria": "BIO"} ] Agora, cada dicionário tem uma chave chamada "categoria", mas os valores são códigos curtos ("FIC", "BIO", etc.). O que queremos fazer é substituir esses códigos pelos nomes completos, como "Ficção" e "Biografia".

Para isso, usamos um dicionário de conversão chamado categorias:

categorias = { "FIC": "Ficção", "BIO": "Biografia", "HIS": "História", "SCI": "Ciência", "PHI": "Filosofia" } Como o if funciona? Quando fazemos o loop com for k, v in livro.items():, estamos percorrendo cada chave e valor do dicionário. Por exemplo, no primeiro livro:

livro = {"titulo": "Livro A", "categoria": "FIC"} O loop percorre assim:

k = "titulo", v = "Livro A" #O código apenas copia esse par para o novo dicionário.

k = "categoria", v = "FIC"

Aqui entra o if k == "categoria":

#Ele verifica se a chave é "categoria" e, se for, substitui "FIC" por "Ficção", usando categorias[v].

Então, no final, temos um dicionário atualizado assim:

{"titulo": "Livro A", "categoria": "Ficção"} Resumo para seu aluno: O for k, v in livro.items(): percorre as chaves e valores de um dicionário. O if k == "categoria": verifica se a chave é "categoria". Se for, ele troca o código curto pelo nome completo, usando um dicionário auxiliar (categorias[v]). Para outras chaves, ele apenas mantém os valores originais. Isso permite que a gente transforme automaticamente todas as categorias de códigos para nomes legíveis!

solução!

Resumindo :

Pensa assim: Você tem uma lista de livros, e cada livro tem uma "categoria" escrita de forma abreviada, tipo "FIC" para "Ficção" ou "BIO" para "Biografia".

O que o código faz é trocar essas abreviações pelos nomes completos.

O for está olhando cada parte do livro (tipo "título" e "categoria"). Quando ele encontra a parte chamada "categoria", ele troca o código pelo nome certo.

O if k == "categoria" serve para dizer: #"Se isso aqui for a categoria, troca pelo nome completo!"

Se não for, só copia do jeito que já está.

No final, todos os livros ficam com as categorias mais fáceis de entender!