求下列题目源代码:【题目描述】智慧推荐中,要针对用户的购买习惯推荐相应的可购买内容,千人千面的满足客户的个性化需求,提高商品的点击量和购买量。下表是用户对商品的一个评级列表,横轴是商品(书本),纵轴是用户,对应的值是用户对商品的评级,最高5分,最低1分,评级越高说明用户对该商品越喜爱,空则代表用户没有对商品进行评级。 探福尔摩斯探案全集 唐诗三百首全解 离散数学及其应用 零基础Python从入门到实践 Java核心技术 卷I:开发基础 中医入门七讲 A 4 3 5 B 5 4 4 C 4
时间: 2024-03-03 20:50:17 浏览: 102
由题目描述中只给出了数据表格,并没有具体要求,因此我为你提供了两种可能的题目源代码实现:
1. 实现一个函数,输入表格数据,输出每个商品的平均评分和评分人数。
```python
def rating_stats(data):
"""
计算每个商品的平均评分和评分人数
:param data: 二维列表,每行为一个用户的评分
:return: 字典,键为商品名,值为元组,包含平均评分和评分人数
"""
stats = {}
for row in data:
for i in range(len(row)):
if row[i] != "":
if i not in stats:
stats[i] = [int(row[i]), 1]
else:
stats[i][0] += int(row[i])
stats[i][1] += 1
for key in stats:
stats[key] = (stats[key][0] / stats[key][1], stats[key][1])
return stats
```
2. 实现一个类,输入表格数据后可以进行以下操作:
- get_avg_rating(name): 获取指定商品的平均评分
- get_num_ratings(name): 获取指定商品的评分人数
- get_top_rated(): 获取评分最高的商品及其评分信息
- get_low_rated(): 获取评分最低的商品及其评分信息
```python
class RatingSystem:
def __init__(self, data):
"""
初始化商品评分系统
:param data: 二维列表,每行为一个用户的评分
"""
self.data = data
self.stats = self._calculate_stats()
def _calculate_stats(self):
"""
计算每个商品的平均评分和评分人数
:return: 字典,键为商品名,值为元组,包含平均评分和评分人数
"""
stats = {}
for row in self.data:
for i in range(len(row)):
if row[i] != "":
if i not in stats:
stats[i] = [int(row[i]), 1]
else:
stats[i][0] += int(row[i])
stats[i][1] += 1
for key in stats:
stats[key] = (stats[key][0] / stats[key][1], stats[key][1])
return stats
def get_avg_rating(self, name):
"""
获取指定商品的平均评分
:param name: 商品名
:return: float,平均评分
"""
if name in self.stats:
return self.stats[name][0]
else:
return None
def get_num_ratings(self, name):
"""
获取指定商品的评分人数
:param name: 商品名
:return: int,评分人数
"""
if name in self.stats:
return self.stats[name][1]
else:
return None
def get_top_rated(self):
"""
获取评分最高的商品及其评分信息
:return: 元组,包含商品名、平均评分和评分人数
"""
top_rated = max(self.stats, key=lambda x: self.stats[x][0])
return (top_rated, self.stats[top_rated][0], self.stats[top_rated][1])
def get_low_rated(self):
"""
获取评分最低的商品及其评分信息
:return: 元组,包含商品名、平均评分和评分人数
"""
low_rated = min(self.stats, key=lambda x: self.stats[x][0])
return (low_rated, self.stats[low_rated][0], self.stats[low_rated][1])
```
以上代码仅供参考,具体实现方式可能因实际情况而异。
阅读全文