如果键包含字符串列表中的字符串,则从字典列表中删除条目

Delete entries from a list of dictionaries if a key includes a string from a list of strings

我有一个词典列表,每个词典都遵循完全相同的格式。我有一个字符串列表,表示应该保留字典,还有一个字符串列表,表示应该删除字典。类似于:

d = [{"key1": 'x', "key2": 'y'},
     {"key1": 'x2', "key2": 'y2'},
     {"key1": 'x3', "key2": 'y3'}]

如果我要删除的字符串列表是

i = ['y2', 'y3']

最终名单是

d = [{"key1": 'x', "key2": 'y'}]

我知道这应该是某种字典理解并且已经尝试过

new_list = [a['key2'] for a in d if not any(j in a for j in i)]

如前所述,我还有一个要保留的字符串列表,如果这样会更有效率的话。

一个选项实际上比您当前的尝试更简单:

d = [{"key1": 'x', "key2": 'y'},
 {"key1": 'x2', "key2": 'y2'},
 {"key1": 'x3', "key2": 'y3'}]

i = ['y2', 'y3']
new_d = [c for c in d if c['key2'] not in i]

输出:

[{'key2': 'y', 'key1': 'x'}]