Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duplicando o conteúdo

Olá,

O meu loop de alteração de key do dictionary está duplicando os registros 6x, está indo de 1323 registros para 7938. O que está causando essa duplicidade?

Código:

data_csv = []
with open(path_csv,'r') as file:
    spamreader = csv.DictReader(file,delimiter = ',')
    for row in spamreader:
        data_csv.append(row)

print('quantidade registros data_csv = ',len(data_csv))

data_csv_nw = []

for old_dict in data_csv:
    temp_dict = {}
    for old_key, value in old_dict.items():
        temp_dict[key_map[old_key]] = value
        data_csv_nw.append(temp_dict)

print('quantidade registros data_csv_new = ',len(data_csv_nw)) 

for dados in data_csv_nw:
    print(dados)

Output: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Bom dia, Paulo.

Primeiramente, parabéns por ter identificado o problema, debugging é uma habilidade muito importante para todo mundo que mexe com linguagens de programação.

Seu erro está nesse bloco:

for old_dict in data_csv:
    temp_dict = {}
    for old_key, value in old_dict.items():
        temp_dict[key_map[old_key]] = value
        data_csv_nw.append(temp_dict)  # Especificamente nesta linha aqui

Você está adicionando o dicionário na data_csv_nw 7 vezes, uma para cada chave no dicionário. Essa linha deveria sair dessa identação, da seguinte maneira:

for old_dict in data_csv:
    temp_dict = {}
    for old_key, value in old_dict.items():
        temp_dict[key_map[old_key]] = value
    data_csv_nw.append(temp_dict)  # Especificamente nesta linha aqui

Outra forma de fazer a mesma coisa:

for old_dict in data_csv:
    temp_dict = {
        key_map[old_key] = value for old_key, value in old_dict.items()
    }
    data_csv_nw.append(temp_dict)

Essa forma se chama compreensão de dicionário, ou dict comp, e é uma maneira mais performática de criar um dicionário a partir de um iterável.

Parabéns pelos estudos constantes!