python - 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)
解决方案
我猜下面代码中的主要问题
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)
推荐阅读
- javascript - 动态创建或删除表单元素
- python - tensorflow.exp(...) 在 edward 教程的代码示例中做了什么
- ios - 自动签名无法解决“myapp”目标的权利问题
- android - 如何减少ffmpeg压缩时间
- javascript - 安全地访问嵌套 javascript 对象内的属性
- javascript - 未捕获的错误:[$injector:nomod] 而 Angularjs 将代码分离为控制器和服务文件
- javascript - javascript Object.create:“直接”设置属性与在 propertiesObject 中声明的设置属性
- javascript - 无法从 Localstorage 读取 vuex 存储模块中 null 的属性“id”
- angularjs - 是否可以将信息从 Angular 组件传递到 AngularJS 组件?
- python - 触发一系列 Python 脚本的 API