所以我有一个模型Education
,它附加到UserProfile
。这个模型就像一个假设一样工作:User
在不同地区的几所学校就读过。在
我想做的是根据用户去了哪里做个“评分”。基本上,如果他们上的是同一所学校,他们得10分,同样的城市,5分,同样的州,2分,以此类推。在
我做了一些函数来尝试这个,但是我失败了。有什么建议吗?在
info = {}
def edu_info(user1):
user_1_cities = []
user_1_schools = []
user_1_state = []
first_one = Education.objects.filter(owner=user1)
for i in first_one:
user_1_cities.append(str(i.city))
user_1_schools.append(str(i.school))
user_1_state.append(str(i.state))
info[str(i.owner.username)] = {}
info[str(i.owner.username)]['cities'] = user_1_cities
info[str(i.owner.username)]['schools'] = user_1_schools
info[str(i.owner.username)]['state'] = user_1_state
return info
def check_match(user1, user2):
match_score = {}
first_info = edu_info(user1)
dict = edu_info(user2)
for item in dict:
cities = dict[item]['cities']
#user2 = item
#print cities
for city in cities:
if city in first_info['jmitchel3']['cities']:
match_score['user'] = 'jmitchel3'
match_score['user2'] = str(user2.user.username)
match_score['city'] = city
print "here! " + str(city)
else:
print "not here! " + str(city)
return match_score
check_match(j,t)
这样的怎么样?在
从一个函数开始,该函数收集单个用户的信息,并为该用户返回一个字典:
然后,有一个单独的函数,该函数为两个用户中的每个用户调用一次信息收集函数,并使用该信息计算点数。在
^{pr2}$check_match
函数的核心部分被卸载到它自己的helper函数中。此函数用于查找两个属性列表的交集,并将共享属性的数量乘以某个点值。它将属性列表转换为集合,然后使用set intersection operator。在因此,
similarity_points(["MN","OR","PA", "NJ"],["AZ","NJ","PA"], 2)
将找到两个匹配项(NJ和PA),因此返回4。在然后,您可以调用上述代码,如下所示:
相关问题 更多 >
编程相关推荐