我有一个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)
答案 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)