我有一个 CSV 文件,我正在将其作为字典列表进行迭代(想象一下 excel 文件中的每一行都由一个单独的字典表示,该字典由一个列名和该列的值组成)。
有什么方法可以遍历所有字典,搜索特定的键:值组合,如果找到,则删除整个字典?本质上,如果特定列 == 99999,则删除该行(字典)。
这就是我所拥有的,我得到的“列表索引超出范围”错误似乎是 常见于此类事物。
for i in range(len(csv_data)):
column_name = 'specific_column'
if csv_data[i][column_name] == '99999':
del csv_data[i]
else:
pass
请您参考如下方法:
您可以使用列表理解重建列表,保留行:
column_name = 'specific_column'
csv_data = [row for row in csv_data if row[column_name] != '99999']
这将创建一个新列表,替换旧列表,其中仅保留特定列未设置为 '99999' 的字典。
你得到一个 IndexError 异常,因为你的循环没有考虑到列表越来越短;您正在从 0 循环到 N,但是当您删除时,列表的最后一个索引从 N - 1 移动到 N - 2等
此外,当您的 i 循环遍历索引时,您最终会跳过 行,因为 i 递增,但是索引中的下一个元素当您删除它前面的项目时,列表会向下移动索引。
