Я пытаюсь создать класс, который будет принимать CSV-файл, читать его и сортировать в словаре, используя одну из строк в качестве ключа. Все, что я могу найти в Интернете по отношению к файлам csv, касается их вне классов.Сортировка CSV в словаре в классе
Я пытаюсь открыть файл csv (называемый books.csv
) и читать каждую строку в частный атрибут класса Shelf под названием __books
, который является словарем. Словарь должен использовать ISBN в качестве ключа.
Я хочу, чтобы получить файл CSV books.csv
в словарь __books{ }
и поставить 4-ю строку в качестве ключа, но каждый раз, когда я бегу, он утверждает, что файл books.csv
не читается в словарь.
Первая часть кода:
class Book:
def __init__(self, title, author, price, isbn):
self.title = title
self.author = author
self.price = price
self.isbn=isbn
def getISBN(self):
return self.isbn
class Shelf:
__books={}
def __init__(self,filename):
f=open(filename, encoding="utf8")
csvreader = csv.reader(f)
for row in csvreader:
abook=Book(row[0],row[1],row[2],row[3])
self.__books[row[4]]=abook
Этот код будет вызываться в другой файл и соответствующий код:
aShelf=Shelf("books.csv")
abook=aShelf._Shelf__books["0743482836"]
if abook.author == "A. Goose":
pass
else:
raise Exception
Что вы подразумеваете под импортированием в словарь? Как вы сейчас работаете неправильно? –
Извините, если неясно. фактический вопрос: Откройте файл csv (так называемый «books.csv») и прочитайте каждую строку в частный атрибут класса Shelf под названием __books, который является словарем.Словарь должен использовать ISBN в качестве ключа. Я хочу получить файл csv «books.csv» в словаре __books {} и поставить четвертый буксир в качестве ключа, но каждый раз, когда я его запускаю, он утверждает, что файл «books.csv» не читается в словаре , – Albi
Я думаю, что это связано с отступом блока, начинающимся 'для строки в csvreader'. Если вы измените это на одном уровне, то он станет частью вашего метода '__init__' и должен работать. –