[F] Fix A3 P2.2 rating typing
This commit is contained in:
@@ -229,6 +229,21 @@ class Graph:
|
||||
- book in self._vertices
|
||||
- self._vertices[book].kind == 'book'
|
||||
- limit >= 1
|
||||
|
||||
>>> my_graph = load_review_graph('data/reviews_full.csv', 'data/book_names.csv')
|
||||
>>> title = "Harry Potter and the Sorcerer's Stone (Book 1)"
|
||||
>>> import pprint
|
||||
>>> pprint.pprint(my_graph.recommend_books(title, 10))
|
||||
['The Casual Vacancy',
|
||||
'Harry Potter and the Chamber of Secrets',
|
||||
'Harry Potter and the Prisoner of Azkaban',
|
||||
'Harry Potter and the Chamber of Secrets, Book 2',
|
||||
'Harry Potter and the Deathly Hallows, Book 7',
|
||||
'Harry Potter And The Goblet Of Fire',
|
||||
'Harry Potter And The Order Of The Phoenix',
|
||||
'Harry Potter and the Half-Blood Prince (Book 6)',
|
||||
"The Cuckoo's Calling (Cormoran Strike)",
|
||||
'Fellowship of the Ring (Lord of the Rings Part 1)']
|
||||
"""
|
||||
book = self._vertices[book] # vertex is more useful here
|
||||
books = set() # all books distance == 2 away from self
|
||||
|
||||
@@ -257,17 +257,23 @@ def load_weighted_review_graph(reviews_file: str, book_names_file: str) -> Weigh
|
||||
format described on the assignment handout
|
||||
"""
|
||||
g = WeightedGraph()
|
||||
mp = {} # maps book ID to book name
|
||||
|
||||
# mp[book_id] = book_name
|
||||
mp: dict[str, str]
|
||||
|
||||
# Read book names file and create id-name mapping
|
||||
with open(book_names_file, 'r', newline='', encoding='UTF-8') as f:
|
||||
reader = csv.reader(f)
|
||||
for row in reader:
|
||||
mp[row[0]] = row[1]
|
||||
mp = {book_id: name for book_id, name in reader}
|
||||
|
||||
# Read user review file and link user and reviews in the graph
|
||||
with open(reviews_file, 'r', newline='', encoding='UTF-8') as f:
|
||||
reader = csv.reader(f)
|
||||
for row in reader:
|
||||
g.add_vertex(row[0], 'user')
|
||||
g.add_vertex(mp[row[1]], 'book')
|
||||
g.add_edge(row[0], mp[row[1]], row[2])
|
||||
for user_id, book_id, rating in reader:
|
||||
g.add_vertex(user_id, 'user')
|
||||
g.add_vertex(mp[book_id], 'book')
|
||||
g.add_edge(user_id, mp[book_id], int(rating))
|
||||
|
||||
return g
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user