1
resposta

[Dúvida] Gostaria de um jeito mais fácil de construir uma chave que os valores são listas

AULA 3, exercício 10.

No meu código eu fui substituindo o valor, que era uma lista, de uma chave várias vezes, pois eu ainda tava construindo a lista que era o valor, queria saber se tem um jeito de adicionar o valor depois que ele tiver pronto no código que eu fiz. obs: percebi que não sei colar um código aqui que nem a formatação do google colab.

O código:


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)]

lis_es = set([funcionarios[i][0] for i in range(len(funcionarios))])


quantia_es = {}
    
for i in lis_es:
    quan_ = []
    for j, l in funcionarios:
        if j == i:
            quan_.append(l)
            quantia_es.update({i : quan_})

fim_10 = {list(quantia_es)[i] : sum(list(quantia_es.values())[i]) for i in range(len(quantia_es))}

print(quantia_es, fim_10)
1 resposta

Olá Manoel, tudo bem?

Uma maneira de fazer isso é utilizando o método setdefault do dicionário, que ajuda a evitar a substituição dos valores. Abaixo deixo uma sugestã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)]

quantia_es = {}

for estado, numero in funcionarios:
    quantia_es.setdefault(estado, []).append(numero)

fim_10 = {estado: sum(numeros) for estado, numeros in quantia_es.items()}

print(quantia_es, fim_10)

Com o setdefault, você pode inicializar a lista para cada chave (estado) apenas uma vez, e então adicionar os valores a essa lista sem precisar substituir a lista inteira.

Quanto para deixar trecho de texto em formato de código, você pode selecionar o trecho correspondente e em seguida clicar na opção Inserir bloco de código

Captura de tela de um editor de texto com barra de ferramentas no topo. O botão de inserir bloco de código com o ícone </> está destacado por um retângulo vermelho e uma seta aponta para ele; aparece a dica “Inserir bloco de código (Ctrl-Alt-C)”. Abaixo, há um trecho de código em Python selecionado em azul, com linhas como funcionarios = [...], quantia_es = {}, um for estado, numero in funcionarios:, quantia_es.setdefault(estado, []).append(numero), a criação de fim_10 = {estado: sum(numeros) for estado, numeros in quantia_es.items()} e print(quantia_es, fim_10).

Destaco também que você poderá explorar a sugestão de resposta do instrutor clicando no botão "Ver opinião do Instrutor"

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!