def calculate_user_top_5(user_id, user_download_history, all_download_history): app_similarity = {} for apps in all_download_history: similarity = Helper.cosine_similarity(user_download_history, apps) for other_app in apps: if app_similarity.has_key(other_app): app_similarity[other_app] += similarity else: app_similarity[other_app] = similarity for app in user_download_history: app_similarity.pop(app) sorted_tups = sorted(app_similarity.items(), key=operator.itemgetter(1), reverse=True) top_5_app = [sorted_tups[0][0], sorted_tups[1][0], sorted_tups[2][0], sorted_tups[3][0], sorted_tups[4][0]] print("top_5_app for " + str(user_id) + ":\t" + str(top_5_app)) DataService.update_user_info({'user_id' : user_id}, {'$set' : {'top_5_app': top_5_app}})