1
resposta

Exercicios Projetos 10

  1. Nessa mesma tabela de cadastro de filiais, há uma coluna com as informações da quantidade de pessoas colaboradoras e o(a) gestor(a) gostaria de ter um agrupamento da soma dessas pessoas para cada estado. As informações contidas na tabela são:
    funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]
    A partir da lista de tuplas, crie um dicionário em que as chaves são os nomes dos Estados únicos e os valores são as listas com o número de colaboradores(as) referentes ao Estado. Crie também um dicionário em que as chaves são os nomes dos Estados e os valores são a soma de colaboradores(as) por Estado.
    Dica: Você pode fazer um passo intermediário para gerar uma lista de listas em que cada uma das listas possui apenas os valores numéricos de funcionários(as) de cada Estado.
funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]
estados_unicos = list(set([tupla[0] for tupla in funcionarios]))

lista_de_listas = []

for estado in estados_unicos:
  lista = [tupla[1] for tupla in funcionarios if tupla[0] == estado]
  lista_de_listas.append(lista)
print(lista_de_listas)

agrupamento_por_estado = {estados_unicos[i] : lista_de_listas[i] for i in range(len(estados_unicos))}
print(agrupamento_por_estado)

soma_por_estado = {estados_unicos[i] : sum(lista_de_listas[i]) for i in range(len(estados_unicos))}
print(soma_por_estado)

Essa ultima questão fiz com base na correção, pois achei ela muito confusa, foi a que mais tive dificuldade, então copiei para tentar entender com clareza, apesar de ainda estar achando nebulosa. Quem puder me explicar a questão de forma passo a passo para melhor compreenssão ficaria agradecida.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Tudo bem, Valentina?

Que bom que você está revisando e buscando entender melhor a lógica por trás da solução, isso é super importante! A dificuldade nessa atividade é comum, pois envolve manipular estruturas de dados de formas diferentes para chegar ao resultado final.

Sobre a explicação, segue abaixo:

1 - Dados iniciais: uma lista de tuplas
Temos uma lista chamada funcionarios, onde cada tupla representa:

  • Primeiro item (tupla[0]): o estado (sigla)
  • Segundo item (tupla[1]): o número de colaboradores nessa unidade
funcionarios = [
    ('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), 
    ('MG', 4), ('ES', 9), ('ES', 7), ('ES', 12), ('SP', 7), 
    ('SP', 11), ('MG', 8), ('ES', 8), ('SP', 9), ('RJ', 13), 
    ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), 
    ('ES', 14), ('SP', 10), ('MG', 12)
]

Dica: Pense em cada tupla como uma linha de uma planilha:
('SP', 16) → "São Paulo tem 16 colaboradores"

2 - Objetivo 1: Extrair os estados únicos (sem repetição)

Queremos uma lista com os estados que aparecem, sem duplicatas:

estados_unicos = list(set([tupla[0] for tupla in funcionarios]))

Como funciona?

- [tupla[0] for tupla in funcionarios] → percorre cada tupla e pega apenas o estado

  • set(...) → remove duplicatas (conjunto não aceita repetição)
  • list(...) → transforma de volta em lista

3 - Objetivo 2: Criar uma lista com os colaboradores de cada estado

Monta-se uma lista de listas, onde cada sublista contém os números de colaboradores de um estado:

lista_de_listas = []
for estado in estados_unicos:
    lista = [tupla[1] for tupla in funcionarios if tupla[0] == estado]
    lista_de_listas.append(lista)
  • Para cada estado em estados_unicos:
  • Filtra todas as tuplas onde o estado bate → pega apenas o número de colaboradores (tupla[1])
  • Guarda essa lista temporária e adiciona na lista_de_listas

4 - Objetivo 3: Montar um dicionário com estado → lista de colaboradores

Associação de cada estado à sua lista de colaboradores:

agrupamento_por_estado = {
    estados_unicos[i]: lista_de_listas[i] 
    for i in range(len(estados_unicos))
}

Usamos o índice i para parear:

  • estados_unicos[i] → chave (ex: 'SP')
  • lista_de_listas[i] → valor (ex: [16, 10, 7, ...])

5 - Objetivo 4: Calcular a soma total de colaboradores por estado

Finalmente, somamos os valores de cada lista:

soma_por_estado = {
    estados_unicos[i]: sum(lista_de_listas[i]) 
    for i in range(len(estados_unicos))
}
  • sum(lista_de_listas[i]) → soma todos os números da lista do estado
  • Criamos um dicionário com estado → total de colaboradores

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!