是否可以搜索特定的键/值条目,如果找到,则删除整个字典?

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)

Mar*_*ers 5

您可以使用列表推导重建列表,而不是保留行:

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但是当您删除前面的项目时,列表中的下一个元素会向下移动索引.