And*_*rew 1 python excel dictionary
我有一个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
Run Code Online (Sandbox Code Playgroud)
您可以使用列表推导重建列表,而不是保留行:
column_name = 'specific_column'
csv_data = [row for row in csv_data if row[column_name] != '99999']
Run Code Online (Sandbox Code Playgroud)
这将创建一个新列表,替换旧的列表,其中仅保留具有未设置的特定列的字典'99999'.
你得到一个IndexError例外,因为你的循环没有考虑到列表越来越短; 你从0循环到N,但是当你删除时,列表的最后一个索引从N - 1,移动到N - 2,等等.
此外,当您i循环遍历索引时,最终会以行为增量跳过行,i但是当您删除前面的项目时,列表中的下一个元素会向下移动索引.