2011-03-06 1 views
5

Je construis une partie rapide de mon application qui regarde les abonnés d'un utilisateur, et met en évidence ceux qui sont suivis par les personnes que l'utilisateur suit (amis).Montrer ce que les suiveurs de Twitter sont suivis par des amis dans Python/Django

Je me demande deux choses:

  1. Est-il un moyen plus efficace de le faire? On dirait que cela va dépasser les limites de l'API de Twitter parce que j'ai besoin de vérifier les amis de chacun des amis de l'utilisateur.

  2. Ceci crée une liste de dicts contenant l'identifiant de l'ami et les suiveurs qu'ils suivent. Au lieu de cela, la dict serait mieux comme l'id suiveur, puis les amis qui les suivent. Conseils?

Code:

# Get followers and friends 
followers = api.GetFollowerIDs()['ids'] 
friends = api.GetFriendIDs()['ids'] 

# Create list of followers user is not following 
followers_not_friends = set(followers).difference(friends) 

# Create list of which of user's followers are followed by which friends 
followers_that_friends_follow = [] 
for f in friends: 
    ff = api.GetFriendIDs(f)['ids'] 
    users = followers_not_friends.intersection(ff) 
    followers_that_friends_follow.append({'friend': f, 'users': users }) 

Répondre

1

Pour la deuxième partie de votre question:

import collections 

followers_that_friends_follow = collections.defaultdict(list) 
for f in friends: 
    ff = api.GetFriendsIDs(f)['ids'] 
    users = followers_not_friends.intersection(ff) 
    for user in users: 
     followers_that_friends_follow[user].append(f) 

qui se traduira par un dictionnaire avec:

clés = ids disciples qui suivent la utilisateur, que l'utilisateur ne suit pas, et sont suivis par les amis de l'utilisateur.

valeurs = liste des id d'amis qui suivent le suiveur, que l'utilisateur ne suit pas

par exemple, si le disciple de l'utilisateur dispose d'un identifiant de 23 et deux amis (utilisateur 16 de l'utilisateur et l'utilisateur 28) suivre l'utilisateur 23, utiliser la touche 23 pour obtenir le résultat suivant

>>> followers_that_friends_follow[23] 
[16,28] 
Questions connexes