如果键包含字符串列表中的字符串,则从字典列表中删除条目
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'}]
我有一个词典列表,每个词典都遵循完全相同的格式。我有一个字符串列表,表示应该保留字典,还有一个字符串列表,表示应该删除字典。类似于:
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'}]