为什么我的字典被截断了?

0 投票
1 回答
689 浏览
提问于 2025-04-18 12:13

我有一个字典,里面有两个列表,一个是推特用户的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']

撰写回答