Назначенное значение во вложенном dict переопределяется в последнем цикле - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть CSV-файл, который я хочу преобразовать во вложенный словарь Python, где ключами являются имена, а значениями являются словари, содержащие ключи часов и статуса (я добавлю дополнительные ключи позже). Файл csv выглядит примерно так:

Name,Hours,Status
John Doe,10,Done
Jane Doe,9,In Progress
Peter Johnson,8,In Progress

К сожалению, всякий раз, когда я зацикливаюсь на файле csv и присваиваю значение примеру [name] ['Available Hours'], он переопределяет его значением последнего человека в CSV-файле:

import csv

template = {
        'Available Hours': None,
        'Project Status': None,
}

with open('example.csv', 'r', encoding="utf-8-sig", newline='') as csv_file:
    csv_reader = csv.DictReader(csv_file, delimiter=',', quotechar='\"')

    example = {}

    for row in csv_reader:
        name = row['Name']
        if name not in example.keys():
            example[name] = template

        # Add available hours to dict
        available_hours = row['Hours']
        example[name]['Available Hours'] = available_hours

        # Add project status to dict

Я получаю следующий вывод:

{
'Jane Doe': {
    'Available Hours': '8',
    'Project Status': None
    },
'John Doe': {
    'Available Hours': '8',
    'Project Status': None
    },
'Peter Johnson': {
    'Available Hours': '8',
    'Project Status': None
    }
}

Как видите, каждая пара ключ-значение для «Часов» теперь установлено на 8. Может кто-то определить, что я делаю неправильно?

...