Por gentileza, seria possível ter uma explicação detalhada e passo a passo de como foi resolvida a questão 9? Quebrei um pouco a cabeça e ainda não entendi.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Por gentileza, seria possível ter uma explicação detalhada e passo a passo de como foi resolvida a questão 9? Quebrei um pouco a cabeça e ainda não entendi.
Olá, Daniel, tudo bem?
Essa questão pede para você criar um dicionário que conta quantas vezes cada Estado aparece na lista de filiais.
Passo 1: Criar uma lista sem estados repetidos
A primeira etapa é garantir que você tenha uma lista contendo cada estado apenas uma vez, para não haver duplicatas. Isso é feito utilizando o set(), que é uma estrutura de dados que remove os elementos duplicados:
estados_unicos = list(set(estados))
O set(estados) elimina os valores duplicados. E o list(set(estados)) converte o conjunto de volta em uma lista, para podermos manipulá-la depois.
A lista estados_unicos agora conterá:
['MG', 'RJ', 'SP', 'ES']
Passo 2: Criar uma lista de listas para cada estado
Agora o objetivo é criar uma lista de listas, onde cada uma dessas sublistas terá apenas os estados repetidos de um único estado. O loop percorrerá cada estado da lista estados_unicos e cria uma sublista contendo apenas as ocorrências daquele estado na lista original estados.
lista_de_listas = []
for estado in estados_unicos:
lista = [uf for uf in estados if uf == estado]
lista_de_listas.append(lista)
O código está fazendo o seguinte:
for estado in estados_unicos:: para cada estado único (ou seja, 'MG', 'RJ', 'SP' e 'ES'), o código vai:[uf for uf in estados if uf == estado]. Ele verifica cada estado na lista original estados e, se for igual ao estado atual.lista_de_listas.append(lista): adiciona a lista criada (sublista) dentro da variável lista_de_listas.O resultado fica:
[['MG', 'MG', 'MG', 'MG', 'MG', 'MG'],
['RJ', 'RJ'],
['SP', 'SP', 'SP', 'SP', 'SP', 'SP', 'SP'],
['ES', 'ES', 'ES', 'ES', 'ES']]
Passo 3: Criar o dicionário final
O objetivo é que a chave seja o nome do estado e o valor seja a quantidade de vezes que esse estado apareceu. A função len() conta quantos elementos existem em cada sublista. Aqui é onde usamos o dict comprehension para criar o dicionário.
contagem_valores = {estados_unicos[i]: len(lista_de_listas[i]) for i in range(len(estados_unicos))}
Neste código aconte o seguinte:
for i in range(len(estados_unicos)): percorre os índices dos estados únicos (de 0 a 3 neste caso).índice i, ele cria uma chave no dicionário onde:estados_unicos[i] é a chave, ou seja, o nome do estado.len(lista_de_listas[i]) é o valor, ou seja, o número de vezes que o estado apareceu na lista original (que é simplesmente o tamanho da sublista correspondente).O resultado será:
{'MG': 6, 'RJ': 2, 'SP': 7, 'ES': 5}
Esse processo de "quebrar em partes" a lista original e criar o dicionário final é bastante comum e ajuda a organizar a informação de maneira clara.
Espero ter ajudado.
Qualquer dúvida, não hesite em compartilhar no fórum.
Abraços!