I have a list of user:friends (50,000) and a list of event attendees (25,000 events and list of attendees for each event). I want to find top k friends with whom the user goes to the event. This needs to be done for each user. 
I tried traversing lists but is computationally very expensive. I am also trying to do it by creating weighted graph.(Python)
Let me know if there is any other approach.
Can you do something like this.
Im assuming friends of a user is relatively less, and the events attended by a particular user is also much lesser than total number of events.
So have a boolean vector of attended events for each friend of the user.
Doing a dot product and those that have max will be the friend who most likely resembles the user.
Again,.before you do this..you will have to filter some events to keep the size of your vectors manageable.
Search in Large data set