Показ того, за какими подписчиками в Twitter следуют друзья в Python / Django - PullRequest
5 голосов
/ 06 марта 2011

Я строю небольшую часть своего приложения, которая просматривает подписчиков пользователя и выделяет, за кем следуют люди, за которыми пользователь (друзья).

Мне интересно две вещи:

  1. Есть ли более эффективный способ сделать это?Похоже, что это приведет к превышению ограничений API Twitter, потому что мне нужно проверять друзей каждого из друзей пользователя.

  2. Это создает список диктов, содержащих идентификатор друга и подписчиков, за которыми он следует,Вместо этого дикт будет лучше, чем идентификатор последователя, а затем друзей, которые следуют за ними.Советы?

Код:

# 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 })

1 Ответ

1 голос
/ 06 марта 2011

Для второй части вашего вопроса:

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)

, что приведет к словарю с:

keys = идентификаторы подписчиков, которые следуют за пользователем, за которыми пользователь не следует, и за ним следуют друзья пользователя.

значения = список идентификаторов друзей, которые подписаны на подписчика, которых пользователь не подписал

например, если подписчик пользователя имеет идентификатор 23 и двое друзей пользователя (пользователь 16 и пользователь 28) следуют за пользователем 23, использование клавиши 23 должно дать следующий результат

>>> followers_that_friends_follow[23]
[16,28]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...