【发布时间】:2015-04-08 21:23:01
【问题描述】:
- 我有一个名为 tweets_data 的列表
- 列表的每个元素都是一个字典
- 字典的键是“文本”
- 但原始数据缺少一些“文本”
这就是为什么,我想删除缺少文本的字典。 这就是我的代码的样子:
for i in range(len(tweets_data)):
try:
print tweets_data[i]['text']
except KeyError:
tweets_data.remove(tweets_data[i])
i += 1
我收到这样的错误:
IndexError: list index out of range
我的问题: 是否可以用更聪明的方式从我的列表中删除丢失的数据,这样我就不会收到这样的错误? 先谢谢了!
【问题讨论】:
-
你知道错误是什么意思吗?
-
您不能在迭代列表时从列表中删除项目而不会混淆索引!每次删除时,列表都会变短 - 但您仍在计算原始列表的长度,并希望在那里找到元素。
-
@Ben 在迭代范围时仍然是这种情况吗?不超过列表本身
-
问题在于
range与原始list匹配,但它被应用于缩小的list。 -
是的——因为对于一个 10 元素的列表,你仍然会尝试在索引 9 处查找元素,即使你已经删除了一半的列表——所以你会得到一个 IndexError。
标签: python list dictionary missing-data keyerror