如何进行单行字典删除操作

How to do a one-line dict delete operation

有没有办法在一行中完成以下操作?

[del item for item in new_json if item['Country'] in countries_to_remove]

上面给了我一个SyntaxError.

del is a statement and you cannot use that as an expression in list comprehenstion。这就是为什么你得到 SyntaxError.

您可以使用列表理解来创建一个新列表,不包含您不想要的元素,就像这样

[item for item in new_json if item['Country'] not in countries_to_remove]

这实际上相当于,

result = []
for item in new_json:
    if item['Country'] not in countries_to_remove:
        result.append(item)

这种操作叫做过滤列表,你可以使用内置的filter函数,像这样

list(filter(lambda x: x['Country'] not in countries_to_remove, new_json))

根据的建议,如果你只想改变原始列表,那么你可以使用切片赋值,就像这样

new_json[:] = [x for x in new_json if x['Country'] not in countries_to_remove]

del 是 python 中的一个语句,你不能在列表理解中有语句(你只能在那里有表达式)。为什么不直接将 new_json 创建为不包含要删除的项目的新列表或字典。示例 =

new_json = [item for item in new_json if item['Country'] not in countries_to_remove]