from random import randrangedata = { f'user{str(i)}': { f'film{str(j)}': randrange(1, 10) for j in range(randrange(15)) } for i in range(10)}for user in data: data[user]['score'] = randrange(1, 100)print(data)让这段代码的每个user换行
时间: 2023-05-26 10:03:53 浏览: 79
from random import randrange
data = {
f'user{str(i)}': {
f'film{str(j)}': randrange(1, 10)
for j in range(randrange(15))
}
for i in range(10)
}
for user in data:
data[user]['score'] = randrange(1, 100)
for user in data:
print(user)
print(data[user])
print() # 每个user换行
相关问题
功能描述:电影推荐 from random import randrange #模拟已有历史数据,{用户名:{喜欢的电影名单}} data= {'user'+str(i): {'film'+str(r...
好的,这是一个电影推荐的代码实现,具体功能是根据已有用户的喜欢电影记录,推荐给新用户可能喜欢的电影。代码如下:
```python
from random import randrange
# 模拟已有历史数据,{用户名:{喜欢的电影名单}}
data= {'user'+str(i): {'film'+str(randrange(10)) for j in range(randrange(5))} for i in range(10)}
# 定义电影列表
films = {'film'+str(i) for i in range(10)}
# 定义函数,根据用户历史记录推荐电影
def recommend(user):
# 定义用户历史记录
user_history = data[user]
# 计算用户未看过的电影
unseen_films = films - user_history
# 定义每部电影的得分
scores = {film: 0 for film in unseen_films}
# 遍历每个用户的历史记录
for user, history in data.items():
# 计算用户和当前用户的历史记录的相似度
similarity = len(history & user_history) / len(history | user_history)
# 遍历当前用户未看过的电影
for film in unseen_films:
# 如果当前用户和遍历的用户都喜欢这部电影,给电影加分
if film in history:
scores[film] += similarity
# 对电影按得分排序,返回得分最高的电影
return sorted(unseen_films, key=lambda film: scores[film], reverse=True)[0]
# 测试代码
print(recommend('user1'))
```
这段代码首先模拟了已有的用户历史数据,然后根据用户历史记录推荐电影。具体实现是,首先计算用户未看过的电影,然后遍历每个用户的历史记录,计算当前用户和遍历的用户的历史记录的相似度,如果当前用户和遍历的用户都喜欢这部电影,给电影加分。最后对电影按得分排序,返回得分最高的电影。
完善以下代码from random import seed,randrange # 模拟历史电影打分数据 seed(2050) data = {'user'+str(i):{'film'+str(randrange(1, 15)):randrange(1, 6) for j in range(randrange(3, 10))} for i in range(10)} #print(data) # 当前用户打分数据 user = {'film'+str(randrange(1, 15)):randrange(1,6) for i in range(5)} #print(user) # 基于用户的协同过滤算法原理: # 两个用户共同打分的电影最多,并且所有电影打分差值的平方和最小 f = lambda item:(-len(item[1].keys()&user), sum(((item[1].get(film)-user.get(film))**2 for film in user.keys()&item[1].keys()))) # 寻找最相似的用户及其对电影打分情况 similarUser, films = min(data.items(), key=f) #print(similarUser, films) print('known data'.center(50, '=')) print(data) print('current user'.center(50, '=')) print(user) print('most similar user and his films'.center(50, '=')) print(similarUser, films, sep=':') print('recommended film'.center(50, '=')) # 在当前用户没看过的电影中选择打分最高的进行推荐
以下是完善后的代码:
```python
from random import seed, randrange
# 模拟历史电影打分数据
seed(2050)
data = {'user'+str(i):{'film'+str(randrange(1, 15)):randrange(1, 6) for j in range(randrange(3, 10))} for i in range(10)}
# 当前用户打分数据
user = {'film'+str(randrange(1, 15)):randrange(1,6) for i in range(5)}
# 基于用户的协同过滤算法原理:
# 两个用户共同打分的电影最多,并且所有电影打分差值的平方和最小
f = lambda item:(-len(item[1].keys()&user), sum(((item[1].get(film)-user.get(film))**2 for film in user.keys()&item[1].keys())))
# 寻找最相似的用户及其对电影打分情况
similarUser, films = min(data.items(), key=f)
print('known data'.center(50, '='))
print(data)
print('current user'.center(50, '='))
print(user)
print('most similar user and his films'.center(50, '='))
print(similarUser, films, sep=':')
print('recommended film'.center(50, '='))
# 在当前用户没看过的电影中选择打分最高的进行推荐
recommended_film = max(films.keys() - user.keys(), key=films.get)
print(recommended_film)
```
这段代码实现了基于用户的协同过滤算法,并在当前用户没看过的电影中选择打分最高的进行推荐。
阅读全文