python:在Twitter粉丝和文件上使用Sets和.intersection;朋友ids

时间:2014-08-31 15:49:28

标签: python set intersection

我有一个Couch DB,其中包含一个Twitter用户的关注者和朋友ID。朋友在“friend_edges”组和“follower_edges”下的粉丝下被识别。

我正在尝试找到那些既是关注者又是朋友(同时)的用户的ids。

为了做到这一点,我被要求将关注者和朋友的列表转换成集合,然后使用集合之间的交集操作 - 比如set1.intersection(set.2)

以下是我的代码。它只返回也是粉丝的朋友的2个值。由于数据集有近2,000个ID,我认为这个值是错误的。

有人可以告诉我我的代码有什么问题吗?...我很感谢你的指导,但是,虽然编程这些任务的方法很多,但我确实需要使用Sets和.intersection,所以请尽量帮助我使用它们... =)

from twitter_login import oauth_login
from twitter_DB import load_from_DB
from sets import Set

def friends_and_followers(users):
    #open a lists for friends and another for followers
    friends_list, followers_list = [], []
    #find the users id under the label "friend_edges"   
    if id in users["friend_edges"] :
        #loop in the "friend edges" group and find id's values
        for value in id: 
            #add value to the list of friends
            friends_list += value   
        #put the rest of the ids under the followers' list
        else:
            followers_list += value            
    return friends_list, followers_list
    print friends_list, followers_list

    #convert list of friends into a set
    flist= set(friends_list)
    #convert list of friends into a set
    follwlist= set(followers_list)       


if __name__ == '__main__':
    twitter_api = oauth_login()
    # check couchdb to look at this database
    DBname = 'users-thatguy-+-only'
    # load all the tweets
    ff_results = load_from_DB(DBname)
    #show number loaded
    print 'number loaded', len(ff_results)


    #iterate over values in the file 
    for user_id in ff_results: 
        #run the function over the values        
        both_friends_followers = friends_and_followers(user_id)
    print "Friends and Followers of that guy:  ", len(both_friends_followers)

2 个答案:

答案 0 :(得分:0)

你得到两个长度的原因是因为你返回这个:

return friends_list, followers_list

这是两个tuple的{​​{1}},然后取lists的长度,即两个。

答案 1 :(得分:0)

我设法通过提取值并使用list.append()将这些值添加到列表中,从字典转换为设置,如下所示:

if 'friend_edges' in doc.keys(): 
        flist = []        
        for x in doc['friend_edges']:
            flist.append(x)