def find_missing_friends(members, known): """(list)->None dsc: find user names that no friend list is found for them """ for member in members: if member not in known: all_friends = friends.find_friends(member) known.update({member: all_friends}) find_friends_recursive(all_friends, known)
def find_friends_bfs(members, known): """(list, dict)->list dsc: find first level of friends and return known stage """ i = 0 users_to_find_next = [] if members.__class__ == list: for name in members: i += 1 print '%d of %d, find friends for %s' % (i, len(members), name) all_friends = friends.find_friends(name) if all_friends.__class__ == list and all_friends: users_to_find_next.extend(all_friends) return list(set(users_to_find_next))
def get_adjacancy_list(members): """(list)-> dict dsc: returns a list of friends and for given members """ result = {} while members: members = list(set(members)) name = members.pop() print len(members), name if name not in result: all_friends = friends.find_friends(name) result.update({name: all_friends}) if all_friends.__class__ == list and all_friends: members.extend(all_friends) return result
def find_friends_recursive(members, known): """(list)->None dsc: gets all members of a given book and returns friends for each one recursively """ i = 0 #print members if members.__class__ == list: for name in members: i += 1 print '%d of %d' % (i, len(members)) print "find friends for %s" % name all_friends = friends.find_friends(name) if all_friends.__class__ == list and all_friends: if name not in known: print "continue with %s" % str(all_friends) known.update({name: all_friends}) find_friends_recursive(all_friends, known) else: print 'done for %s' % name print "finished successfully! %d" % len(members)