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)
2 respuestas
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.
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)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.