Преобразование данных в словарь из CSV без первой строки - PullRequest
1 голос
/ 13 апреля 2020

Предположим, у меня есть файл CSV, который выглядит следующим образом:

Title,Category,Price,Rating
To Kill a Mockingbird,Fiction,11.99,89
Killing Lincoln,Nonfiction,15.99,85

И я хочу преобразовать его в словарь, который выглядит следующим образом:

{'To Kill a Mockingbird': ('Fiction', 11.99, 89), 'Killing Lincoln': ('Nonfiction', 15.99, 85), ... }

Я хочу убедиться, что заголовки столбцов удалены (т. Е. Первая строка НЕ ​​включена).

Я начал с попытки следующий.

import csv
reader = csv.reader(open('bookdata.csv'))
result = {}

for row in reader:
    key = reader[0]
    result[key] = reader[1:]
print(result)

Но когда я делаю это, я не удаляю первую строку, и словарь содержит списки, а не кортежи. Как я могу это исправить? Я также хочу убедиться, что символ \ n удален.

1 Ответ

1 голос
/ 13 апреля 2020

Вы рядом. Во-первых, есть ошибка, когда вы говорите reader, когда она должна быть row. Тогда просто вопрос пропустить строку заголовка с next и преобразовать список в кортеж.

import csv
from decimal import Decimal

reader = csv.reader(open('bookdata.csv'))
# skip header
next(reader)
result = {}

for row in reader:
    # only needed if empty lines in input
    if not row:
        continue
    key = row[0]
    # Book with category, price in decimal, and other thingie??
    result[key] = row[1], Decimal(row[2]), int(row[3])

print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...