2016-03-21 5 views
0

Ich versuche, ein Programm zu machen, die von der Suche nach Ähnlichkeiten in Benutzern Partituren in verschiedenen Themen wahrscheinlich Freunde finden:Python - Werte nur dann verwendet werden, wenn sie nach dem ersten in einer Liste sind

def similarity(user,d_list): 

user_data=() 
user_score=[] 



for item in d_list: 
    if user in item: 
     user_data=item[1] 


    if item[0]!=user : 
     local_score=0 


     local_score=sum(a*b for a,b in zip(user_data,item[1]))   
     user_score.append(local_score) 

print user_score 





return 

Bei Verwendung:

ratings=(("mark",[4,8,0,7]),("bob",[3,6,9,1]),("jim",[11,4,6,3]),("steve",[22,19,1,0])) 

als d_list und "Markierung", wie der Benutzer arbeitet das Programm wie erwartet, so dass:

[67, 97, 240] 

Wenn Bob verwendet wird, wird der Vergleich mit der Markierung auf 0 gesetzt

[0, 114, 189] 

Wenn steve den Satz verwendet wird, ist nur Nullen. Ich bin ratlos.

Antwort

0

Ich habe es. Die Berechnung wurde noch innerhalb der ersten Iteration durch d_list verschachtelt.

def similarity(user,d_list): 

user_data=() 
user_score=[] 



for item in d_list: 
    if user in item: 
     user_data=item[1] 


for item in d_list: 

    if item[0]!=user : 
     local_score=0 


     local_score=sum(a*b for a,b in zip(user_data,item[1]))   
     user_score.append(local_score) 

print user_score 





return 
Verwandte Themen