Tengo un Couch DB con ID de seguidores y amigos de un solo usuario de Twitter. Los amigos se identifican en el grupo "friend_edges" y los seguidores en "follower_edges".

Estoy tratando de encontrar identificadores de aquellos que son seguidores y amigos (al mismo tiempo) de ese usuario.

Para hacer eso, se me pidió convertir listas de seguidores y amigos en conjuntos, y luego usar la operación de intersección entre conjuntos, como set1.intersection (set.2)

Abajo está mi código. Devuelve los únicos 2 valores de amigos que también son seguidores. Dado que el conjunto de datos tiene casi 2,000 identificadores, estoy seguro de que este valor es incorrecto.

¿Alguien puede decirme qué tiene de malo mi código? ... Agradezco su orientación, pero, aunque hay muchas maneras de programar estas tareas, necesito usar los conjuntos y la intersección, así que intente ayudarme a usarlos solo ... =)

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
norpa 31 ago. 2014 a las 19:49

2 respuestas

La mejor respuesta

La razón por la que obtiene una longitud de dos es porque devuelve esto:

return friends_list, followers_list

Que es un tuple de dos lists, luego toma la longitud de ese tuple, que es dos.

0
aruisdante 31 ago. 2014 a las 16:10

Logré convertir de diccionario a conjunto extrayendo los valores y agregándolos a una lista usando list.append (), de la siguiente manera:

if 'friend_edges' in doc.keys(): 
        flist = []        
        for x in doc['friend_edges']:
            flist.append(x)
0
norpa 2 sep. 2014 a las 00:23