为什么我的字典被截断了?
我有一个字典,里面有两个列表,一个是推特用户的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)
问题似乎出在我创建字典的方式上,但我搞不清楚为什么会变短。我真的很想用字典来简化操作,而不是仅仅返回这两个列表。
1 个回答
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']