我的字典必须列出一个Twitter用户ID和一个屏幕名称(通过tweepy收集。
两个列表都是正确的,但是当我尝试将它们压缩到字典中时,屏幕名称会被截断。
条目如下所示:
189754969: u'l'
这里的名字打印得恰到好处:
AngelicaNUnga
JoeChevrette
sillyfaceee
这是引用字典的代码:
def paginate(iterable, page_size):#functional but needed to make the other def work
while True:
i1, i2 = itertools.tee(iterable)
iterable, page = (itertools.islice(i1, page_size, None),
list(itertools.islice(i2, page_size)))
if len(page) == 0:
break
yield page
def get_followers(target):
target_following_users = {}
followers = []
screen_n = []
for page in tweepy.Cursor(api.followers_ids, screen_name=target).pages():#gets the followers for userID
followers.extend(page)
time.sleep(60)#keeps us cool with twitter
for page in paginate(followers, 100):#see paginate
results = api.lookup_users(user_ids=page)
for result in results:
print result.screen_name
screen_n.extend(result.screen_name)
target_following_users.update(zip(followers, screen_n))
return target_following_users
print get_followers(target)
问题似乎在于我如何创建我的字典,但我无法弄清楚为什么它会截断。我真的很想使用词典来简化,而不仅仅是返回两个列表。
答案 0 :(得分:4)
如果没有实际看到此项运行,您似乎正在使用如下列表扩展screen_n
列表:
['u','s','e','r']
因为屏幕名称是一个字符串而您正在使用extend
(将参数列表中的项追加到调用extend
的列表中)。你可能想要screen_n.append(results.screen_name)
。
例如,
>>> a = range(3)
>>> a.extend(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> a.extend('45')
>>> a
[0, 1, 2, '4', '5']