首页 > 解决方案 > IndexError:列表索引超出循环范围

问题描述

我正在使用 Python 3 / Tweepy 创建一个列表,其中包含与各种 Twitter 句柄关联的用户名。

我的代码创建了一个空字典,遍历列表中的句柄以获取用户名,将此信息保存在字典中,然后将字典附加到新列表中。

IndexError: list index out of range当我运行代码时,我得到了。当我删除 for 循环的第 4 行时,我没有收到错误。关于如何解决问题的任何想法?为什么这行代码会导致错误?谢谢!

这是我的代码:

def analyzer():
handles = ['@Nasdaq', '@Apple', '@Microsoft', '@amazon', '@Google', '@facebook', '@GileadSciences', '@intel']
data = []
# Grab twitter handles and append the name to data
for handle in handles:
    data_dict = {}
    tweets = api.user_timeline(handle)
    data_dict['Handle'] = handle
    data_dict['Name'] = tweets[0]['user']['name']
    data.append(data_dict)

标签: pythonlistloopsdictionarytweepy

解决方案


我猜下面代码中的主要问题

 tweets = api.user_timeline(handle)

api.user_timeline() 可能会返回空列表,并且您正在尝试访问此空列表中的第一个元素。

 tweets[0]

这就是为什么您遇到“索引超出范围”问题的原因。

你可以像这样修改你的代码 -

for handle in handles:
    data_dict = {}
    tweets = api.user_timeline(handle)
    data_dict['Handle'] = handle
    if tweets:
        data_dict['Name'] = tweets[0]['user']['name']
    data.append(data_dict)

推荐阅读