Для второй части вашего вопроса:
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]