У меня есть 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. Может кто-то определить, что я делаю неправильно?