def recall(recommends, test):
	"""计算召回率

	:param recommends: 给用户的推荐结果{用户 : 该用户的推荐列表}
	:param test: 测试集{用户 : 该用户感兴趣的物品列表}
	:return: 召回率
	"""

	hit = 0 #预测对的物品数
	total = 0 #用户在测试集上喜欢的物品数
	#temp = 0
	for user, items in recommends.items():
		"""
		if user not in test.keys():
			temp += 1
			continue
		"""
		rec = set(items)
		tes = set(test[user])
		hit += len(rec & tes) #交集
		total += len(rec)
	#print("有多少用户不在test:" + str(temp))
	return hit / (total * 1.0)