如何进行单行字典删除操作
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]
有没有办法在一行中完成以下操作?
[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]