у меня ок.266680 пользователей (значение моей переменной user_num
равно 266680) и карта со значением ключа индекса пользователя и списком бизнес-индексов.Например: users_businesses[0] = 1,5,7,9,11,15
означает, что пользователь с индексом 0 уже проголосовал за предприятия с индексом 1,5,7,9,11,15
.Моя задача состоит в том, чтобы создать пограничный список между пользователями, которые имеют по крайней мере 5 общих рейтинговых компаний.Так, например, если: users_businesses[1] = 1,5,7,9,11,13 -> (0,1)
будет преимуществом, потому что 0 и 1 пользователи имеют 5 общих рейтинговых компаний.
Я пробовал следующее:
def Length_Elements(element_list):
num=0
for element in element_list:
num=num+1
return num
def More_Than_Five_Common_Businesses(list1, list2):
common_elements = list(set(list1).intersection(list2))
num = Length_Elements(common_elements)
if(num >= 5):
return True
return False
tuple_list = []
for user1 in range(user_num):
for user2 in range(user_num):
if(More_Than_Five_Common_Businesses(users_businesses[user1],users_businesses[user2])):
tuple_list.append((user1,user2))
Конечно, это оченьмедленный, потому что вложенный цикл повторяется 266680 * 266680 раз.Не могли бы вы дать мне лучшее решение?Буду признателен.Спасибо!