我想创建一个简单的推荐系统,向用户推荐他们的朋友正在阅读的书籍。我创建了一个名为“推荐”的类,用于捕获用户的详细信息,如姓名,用户的朋友,用户的书籍和推荐的书籍(朋友的书籍)。现在的问题是用户'A'的实例被创建,'A的推荐书籍列表是空的,因为它的朋友'B'尚未被实例化。当'B'被实例化时,'A'仍然没有关于B的书籍的线索,因为'A'已经在'B'之前被实例化。有没有办法来解决这个问题?在Python中创建一个简单的推荐系统
from collections import defaultdict
class recommendation:
friendsgraph = defaultdict(set) # key: user, value: friends of users
booksgraph = defaultdict(set) # key: user, value: books of user
def __init__(self, user, books, friends):
self.name = user
self.books = books
self.friends = friends
self.recommended_books = friendsbooks(friends)
recommendation.friendsgraph[user] = friends
recommendation.friendsgraph[user] = books
def friendsbooks(friends):
recommendation_list = set()
for friend in friends:
rec_books = recommendation.booksgraph[friend]
if rec_books:
recommendation_list.add(rec_books)
else:
recommendation_list =()
return recommendation_list
A = recommendation('A',('Harry Potter'),('B'))
B = recommendation('B',('Harry Potter', 'Master Algo'),('A','C'))
之一来解决这种方式是通过朋友的字典和书籍属性,并编写建议书单独的方法。通过这种方式,每个用户在实例化时都会意识到它的朋友和他们的书籍。然而,这种策略消除了将属性与个人用户关联的能力(如A.recommended_books)。
class recommendation:
def __init__(self):
self.friendsgraph = defaultdict(set)
self.booksgraph = defaultdict(set)
有关使'User'和'Book'类,并绕过这些情况怎么办?使用这样的字符串不会使你能够遵循关系。你可以在'User'类中存储建议,只是一本书的列表。 – Grimmy